/*
 Highcharts JS v2.1.8 (2011-11-05)

 (c) 2009-2011 Torstein H?nsi

 License: www.highcharts.com/license
*/
(function(){
    function sa(a,b){
        var c;
        a||(a={});
        for(c in b)a[c]=b[c];return a
    }
    function ja(a,b){
        return parseInt(a,b||10)
    }
    function Sb(a){
        return typeof a==="string"
    }
    function Nb(a){
        return typeof a==="object"
    }
    function lc(a){
        return typeof a==="number"
    }
    function mc(a){
        return Fa.log(a)/Fa.LN10
    }
    function nc(a,b){
        for(var c=a.length;c--;)if(a[c]===b){
            a.splice(c,1);
            break
        }
    }
    function K(a){
        return a!==Wa&&a!==null
    }
    function Ga(a,b,c){
        var d,e;
        if(Sb(b))if(K(c))a.setAttribute(b,c);
            else{
                if(a&&a.getAttribute)e=a.getAttribute(b)
            }else if(K(b)&&
            Nb(b))for(d in b)a.setAttribute(d,b[d]);return e
    }
    function xc(a){
        return Object.prototype.toString.call(a)==="[object Array]"?a:[a]
    }
    function A(){
        var a=arguments,b,c,d=a.length;
        for(b=0;b<d;b++){
            c=a[b];
            if(typeof c!=="undefined"&&c!==null)return c
        }
    }
    function Ja(a,b){
        if(Mc)if(b&&b.opacity!==Wa)b.filter="alpha(opacity="+b.opacity*100+")";
        sa(a.style,b)
    }
    function hb(a,b,c,d,e){
        a=ua.createElement(a);
        b&&sa(a,b);
        e&&Ja(a,{
            padding:0,
            border:jb,
            margin:0
        });
        c&&Ja(a,c);
        d&&d.appendChild(a);
        return a
    }
    function yb(a,b){
        var c=
        function(){};
    
        c.prototype=new a;
        sa(c.prototype,b);
        return c
    }
    function Ed(a,b,c,d){
        var e=Xa.lang;
        a=a;
        var f=isNaN(b=bb(b))?2:b;
        b=c===undefined?e.decimalPoint:c;
        d=d===undefined?e.thousandsSep:d;
        e=a<0?"-":"";
        c=String(ja(a=bb(+a||0).toFixed(f)));
        var g=c.length>3?c.length%3:0;
        return e+(g?c.substr(0,g)+d:"")+c.substr(g).replace(/(\d{3})(?=\d)/g,"$1"+d)+(f?b+bb(a-c).toFixed(f).slice(2):"")
    }
    function Fd(a){
        var b={
            left:a.offsetLeft,
            top:a.offsetTop
        };
        
        for(a=a.offsetParent;a;){
            b.left+=a.offsetLeft;
            b.top+=a.offsetTop;
            if(a!==ua.body&&a!==ua.documentElement){
                b.left-=a.scrollLeft;
                b.top-=a.scrollTop
            }
            a=a.offsetParent
        }
        return b
    }
    function Gd(){
        this.symbol=this.color=0
    }
    function fe(a,b,c,d,e,f,g){
        var h=g.x;
        g=g.y;
        var i=h-a+c-25,j=g-b+d+10,m;
        if(i<7)i=c+h+15;
        if(i+a>c+e){
            i-=i+a-(c+e);
            j-=b;
            m=true
        }
        if(j<5){
            j=5;
            if(m&&g>=j&&g<=j+b)j=g+b-5
        }else if(j+b>d+f)j=d+f-b-5;
        return{
            x:i,
            y:j
        }
    }
    function Hd(a,b){
        var c=a.length,d;
        for(d=0;d<c;d++)a[d].ss_i=d;
        a.sort(function(e,f){
            var g=b(e,f);
            return g===0?e.ss_i-f.ss_i:g
        });
        for(d=0;d<c;d++)delete a[d].ss_i
    }
    function yc(a){
        for(var b in a){
            a[b]&&a[b].destroy&&a[b].destroy();
            delete a[b]
        }
    }
    function oc(a,b){
        zc=A(a,b.animation)
    }
    function Id(){
        var a=Xa.global.useUTC;
        Nc=a?Date.UTC:function(b,c,d,e,f,g){
            return(new Date(b,c,A(d,1),A(e,0),A(f,0),A(g,0))).getTime()
        };
        
        hd=a?"getUTCMinutes":"getMinutes";
        id=a?"getUTCHours":"getHours";
        jd=a?"getUTCDay":"getDay";
        Ac=a?"getUTCDate":"getDate";
        Oc=a?"getUTCMonth":"getMonth";
        Pc=a?"getUTCFullYear":"getFullYear";
        Jd=a?"setUTCMinutes":"setMinutes";
        Kd=a?"setUTCHours":"setHours";
        kd=
        a?"setUTCDate":"setDate";
        Ld=a?"setUTCMonth":"setMonth";
        Md=a?"setUTCFullYear":"setFullYear"
    }
    function Qc(a){
        Rc||(Rc=hb(Tb));
        a&&Rc.appendChild(a);
        Rc.innerHTML=""
    }
    function Sc(){}
    function Nd(a,b){
        function c(p){
            function q(k,n){
                this.pos=k;
                this.minor=n;
                this.isNew=true;
                n||this.addLabel()
            }
            function w(k){
                if(k){
                    this.options=k;
                    this.id=k.id
                }
                return this
            }
            function x(k,n,t,r){
                this.isNegative=n;
                this.options=k;
                this.x=t;
                this.stack=r;
                this.alignOptions={
                    align:k.align||(va?n?"left":"right":"center"),
                    verticalAlign:k.verticalAlign||
                    (va?"middle":n?"bottom":"top"),
                    y:A(k.y,va?4:n?14:-6),
                    x:A(k.x,va?n?-6:6:0)
                };
                
                this.textAlign=k.textAlign||(va?n?"right":"left":"center")
            }
            function V(){
                var k=[],n=[],t;
                pa=wa=null;
                zb=[];
                u(Ha,function(r){
                    t=false;
                    u(["xAxis","yAxis"],function(F){
                        if(r.isCartesian&&(F==="xAxis"&&xa||F==="yAxis"&&!xa)&&(r.options[F]===o.index||r.options[F]===Wa&&o.index===0)){
                            r[F]=I;
                            zb.push(r);
                            t=true
                        }
                    });
                    if(!r.visible&&z.ignoreHiddenSeries)t=false;
                    if(t){
                        var J,E,Q,fa,ka,$;
                        if(!xa){
                            J=r.options.stacking;
                            Tc=J==="percent";
                            if(J){
                                ka=
                                r.options.stack;
                                fa=r.type+A(ka,"");
                                $="-"+fa;
                                r.stackKey=fa;
                                E=k[fa]||[];
                                k[fa]=E;
                                Q=n[$]||[];
                                n[$]=Q
                            }
                            if(Tc){
                                pa=0;
                                wa=99
                            }
                        }
                        if(r.isCartesian){
                            u(r.data,function(F){
                                var O=F.x,S=F.y,aa=S<0,Eb=aa?Q:E,kb=aa?$:fa;
                                if(pa===null)pa=wa=F[qa];
                                if(xa)if(O>wa)wa=O;
                                    else{
                                        if(O<pa)pa=O
                                    }else if(K(S)){
                                    if(J)Eb[O]=K(Eb[O])?Eb[O]+S:S;
                                    S=Eb?Eb[O]:S;
                                    F=A(F.low,S);
                                    if(!Tc)if(S>wa)wa=S;
                                        else if(F<pa)pa=F;
                                    if(J){
                                        s[kb]||(s[kb]={});
                                        s[kb][O]||(s[kb][O]=new x(o.stackLabels,aa,O,ka));
                                        s[kb][O].setTotal(S)
                                    }
                                }
                            });
                            if(/(area|column|bar)/.test(r.type)&&
                                !xa)if(pa>=0){
                                pa=0;
                                Od=true
                            }else if(wa<0){
                                wa=0;
                                Pd=true
                            }
                        }
                    }
                })
            }
            function N(k,n){
                var t,r;
                Fb=n?1:Fa.pow(10,lb(Fa.log(k)/Fa.LN10));
                t=k/Fb;
                if(!n){
                    n=[1,2,2.5,5,10];
                    if(o.allowDecimals===false||ca)if(Fb===1)n=[1,2,5,10];
                        else if(Fb<=0.1)n=[1/Fb]
                }
                for(r=0;r<n.length;r++){
                    k=n[r];
                    if(t<=(n[r]+(n[r+1]||n[r]))/2)break
                }
                k*=Fb;
                return k
            }
            function ta(k){
                var n;
                n=k;
                Fb=A(Fb,Fa.pow(10,lb(Fa.log(Ta)/Fa.LN10)));
                if(Fb<1){
                    n=W(1/Fb)*10;
                    n=W(k*n)/n
                }
                return n
            }
            function da(){
                var k,n,t,r,J=o.tickInterval,E=o.tickPixelInterval;
                k=o.maxZoom||
                (xa&&!K(o.min)&&!K(o.max)?sb(l.smallestInterval*5,wa-pa):null);
                ya=R?Da:Aa;
                if(Ub){
                    t=l[xa?"xAxis":"yAxis"][o.linkedTo];
                    r=t.getExtremes();
                    ia=A(r.min,r.dataMin);
                    ra=A(r.max,r.dataMax)
                }else{
                    ia=A(Vb,o.min,pa);
                    ra=A(Gb,o.max,wa)
                }
                if(ca){
                    ia=mc(ia);
                    ra=mc(ra)
                }
                if(ra-ia<k){
                    r=(k-ra+ia)/2;
                    ia=Ia(ia-r,A(o.min,ia-r),pa);
                    ra=sb(ia+k,A(o.max,ia+k),wa)
                }
                if(!Ya&&!Tc&&!Ub&&K(ia)&&K(ra)){
                    k=ra-ia||1;
                    if(!K(o.min)&&!K(Vb)&&Qd&&(pa<0||!Od))ia-=k*Qd;
                    if(!K(o.max)&&!K(Gb)&&Rd&&(wa>0||!Pd))ra+=k*Rd
                }
                Ta=ia===ra?1:Ub&&!J&&E===t.options.tickPixelInterval?
                t.tickInterval:A(J,Ya?1:(ra-ia)*E/ya);
                if(!D&&!K(o.tickInterval))Ta=N(Ta);
                I.tickInterval=Ta;
                Uc=o.minorTickInterval==="auto"&&Ta?Ta/5:o.minorTickInterval;
                if(D){
                    Ba=[];
                    J=Xa.global.useUTC;
                    var Q=1E3/tb,fa=6E4/tb,ka=36E5/tb;
                    E=864E5/tb;
                    k=6048E5/tb;
                    r=2592E6/tb;
                    var $=31556952E3/tb,F=[["second",Q,[1,2,5,10,15,30]],["minute",fa,[1,2,5,10,15,30]],["hour",ka,[1,2,3,4,6,8,12]],["day",E,[1,2]],["week",k,[1,2]],["month",r,[1,2,3,4,6]],["year",$,null]],O=F[6],S=O[1],aa=O[2];
                    for(t=0;t<F.length;t++){
                        O=F[t];
                        S=O[1];
                        aa=
                        O[2];
                        if(F[t+1])if(Ta<=(S*aa[aa.length-1]+F[t+1][1])/2)break
                    }
                    if(S===$&&Ta<5*S)aa=[1,2,5];
                    F=N(Ta/S,aa);
                    aa=new Date(ia*tb);
                    aa.setMilliseconds(0);
                    if(S>=Q)aa.setSeconds(S>=fa?0:F*lb(aa.getSeconds()/F));
                    if(S>=fa)aa[Jd](S>=ka?0:F*lb(aa[hd]()/F));
                    if(S>=ka)aa[Kd](S>=E?0:F*lb(aa[id]()/F));
                    if(S>=E)aa[kd](S>=r?1:F*lb(aa[Ac]()/F));
                    if(S>=r){
                        aa[Ld](S>=$?0:F*lb(aa[Oc]()/F));
                        n=aa[Pc]()
                    }
                    if(S>=$){
                        n-=n%F;
                        aa[Md](n)
                    }
                    S===k&&aa[kd](aa[Ac]()-aa[jd]()+o.startOfWeek);
                    t=1;
                    n=aa[Pc]();
                    Q=aa.getTime()/tb;
                    fa=aa[Oc]();
                    for(ka=aa[Ac]();Q<
                        ra&&t<Da;){
                        Ba.push(Q);
                        if(S===$)Q=Nc(n+t*F,0)/tb;
                        else if(S===r)Q=Nc(n,fa+t*F)/tb;
                        else if(!J&&(S===E||S===k))Q=Nc(n,fa,ka+t*F*(S===E?1:7));else Q+=S*F;
                        t++
                    }
                    Ba.push(Q);
                    Vc=o.dateTimeLabelFormats[O[0]]
                }else{
                    t=ta(lb(ia/Ta)*Ta);
                    n=ta(ld(ra/Ta)*Ta);
                    Ba=[];
                    for(t=ta(t);t<=n;){
                        Ba.push(t);
                        t=ta(t+Ta)
                    }
                }
                if(!Ub){
                    if(Ya||xa&&l.hasColumn){
                        n=(Ya?1:Ta)*0.5;
                        if(Ya||!K(A(o.min,Vb)))ia-=n;
                        if(Ya||!K(A(o.max,Gb)))ra+=n
                    }
                    n=Ba[0];
                    t=Ba[Ba.length-1];
                    if(o.startOnTick)ia=n;else ia>n&&Ba.shift();
                    if(o.endOnTick)ra=t;else ra<t&&Ba.pop();
                    Ob||(Ob={
                        x:0,
                        y:0
                    });
                    if(!D&&Ba.length>Ob[qa])Ob[qa]=Ba.length
                }
            }
            function Ma(){
                var k,n;
                Bc=ia;
                Sd=ra;
                V();
                da();
                Hb=fb;
                fb=ya/(ra-ia||1);
                if(!xa)for(k in s)for(n in s[k])s[k][n].cum=s[k][n].total;if(!I.isDirty)I.isDirty=ia!==Bc||ra!==Sd
            }
            function za(k){
                k=(new w(k)).render();
                Pb.push(k);
                return k
            }
            function eb(){
                var k=o.title,n=o.stackLabels,t=o.alternateGridColor,r=o.lineWidth,J,E,Q=(J=l.hasRendered)&&K(Bc)&&!isNaN(Bc);
                E=zb.length&&K(ia)&&K(ra);
                ya=R?Da:Aa;
                fb=ya/(ra-ia||1);
                cc=R?X:ub;
                if(E||Ub){
                    if(Uc&&!Ya)for(E=ia+
                        (Ba[0]-ia)%Uc;E<=ra;E+=Uc){
                        Wb[E]||(Wb[E]=new q(E,true));
                        Q&&Wb[E].isNew&&Wb[E].render(null,true);
                        Wb[E].isActive=true;
                        Wb[E].render()
                    }
                    u(Ba,function($,F){
                        if(!Ub||$>=ia&&$<=ra){
                            Q&&mb[$].isNew&&mb[$].render(F,true);
                            mb[$].isActive=true;
                            mb[$].render(F)
                        }
                    });
                    t&&u(Ba,function($,F){
                        if(F%2===0&&$<ra){
                            dc[$]||(dc[$]=new w);
                            dc[$].options={
                                from:$,
                                to:Ba[F+1]!==Wa?Ba[F+1]:ra,
                                color:t
                            };
            
                            dc[$].render();
                            dc[$].isActive=true
                        }
                    });
                    J||u((o.plotLines||[]).concat(o.plotBands||[]),function($){
                        Pb.push((new w($)).render())
                    })
                }
                u([mb,
                    Wb,dc],function($){
                        for(var F in $)if($[F].isActive)$[F].isActive=false;
                            else{
                                $[F].destroy();
                                delete $[F]
                            }
                    });
                if(r){
                    J=X+(Oa?Da:0)+la;
                    E=cb-ub-(Oa?Aa:0)+la;
                    J=ga.crispLine([Za,R?X:J,R?E:ea,Ka,R?$a-Ib:J,R?E:cb-ub],r);
                    if(La)La.animate({
                        d:J
                    });else La=ga.path(J).attr({
                        stroke:o.lineColor,
                        "stroke-width":r,
                        zIndex:7
                    }).add()
                }
                if(ba){
                    J=R?X:ea;
                    r=ja(k.style.fontSize||12);
                    J={
                        low:J+(R?0:ya),
                        middle:J+ya/2,
                        high:J+(R?ya:0)
                    }
                    [k.align];
                    r=(R?ea+Aa:X)+(R?1:-1)*(Oa?-1:1)*md+(L===2?r:0);
                    ba[ba.isNew?"attr":"animate"]({
                        x:R?J:r+(Oa?
                            Da:0)+la+(k.x||0),
                        y:R?r-(Oa?Aa:0)+la:J+(k.y||0)
                    });
                    ba.isNew=false
                }
                if(n&&n.enabled){
                    var fa,ka;
                    n=I.stackTotalGroup;
                    if(!n)I.stackTotalGroup=n=ga.g("stack-labels").attr({
                        visibility:Ab,
                        zIndex:6
                    }).translate(X,ea).add();
                    for(fa in s){
                        k=s[fa];
                        for(ka in k)k[ka].render(n)
                    }
                }
                I.isDirty=false
            }
            function ab(k){
                for(var n=Pb.length;n--;)Pb[n].id===k&&Pb[n].destroy()
            }
            var xa=p.isX,Oa=p.opposite,R=va?!xa:xa,L=R?Oa?0:2:Oa?1:3,s={},o=Ca(xa?Wc:nd,[ge,he,Td,ie][L],p),I=this,ba,B=o.type,D=B==="datetime",ca=B==="logarithmic",
            la=o.offset||0,qa=xa?"x":"y",ya,fb,Hb,cc=R?X:ub,G,ha,na,Ra,La,pa,wa,zb,Vb,Gb,ra=null,ia=null,Bc,Sd,Qd=o.minPadding,Rd=o.maxPadding,Ub=K(o.linkedTo),Od,Pd,Tc;
            B=o.events;
            var od,Pb=[],Ta,Uc,Fb,Ba,mb={},Wb={},dc={},pc,qc,md,Vc,Ya=o.categories,je=o.labels.formatter||function(){
                var k=this.value;
                return Vc?Xc(Vc,k):Ta%1E6===0?k/1E6+"M":Ta%1E3===0?k/1E3+" tūkst.":!Ya&&k>=1E3?Ed(k,0):k
            },Yc=R&&o.labels.staggerLines,ec=o.reversed,fc=Ya&&o.tickmarkPlacement==="between"?0.5:0;
            q.prototype={
                addLabel:function(){
                    var k=this.pos,
                    n=o.labels,t=!(k===ia&&!A(o.showFirstLabel,1)||k===ra&&!A(o.showLastLabel,0)),r=Ya&&R&&Ya.length&&!n.step&&!n.staggerLines&&!n.rotation&&Da/Ya.length||!R&&Da/2,J=Ya&&K(Ya[k])?Ya[k]:k,E=this.label;
                    k=je.call({
                        isFirst:k===Ba[0],
                        isLast:k===Ba[Ba.length-1],
                        dateTimeLabelFormat:Vc,
                        value:ca?Fa.pow(10,J):J
                    });
                    r=r&&{
                        width:Ia(1,W(r-2*(n.padding||10)))+Ua
                    };
            
                    r=sa(r,n.style);
                    if(E===Wa)this.label=K(k)&&t&&n.enabled?ga.text(k,0,0,n.useHTML).attr({
                        align:n.align,
                        rotation:n.rotation
                    }).css(r).add(na):null;else E&&E.attr({
                        text:k
                    }).css(r)
                },
                getLabelSize:function(){
                    var k=this.label;
                    return k?(this.labelBBox=k.getBBox())[R?"height":"width"]:0
                },
                render:function(k,n){
                    var t=!this.minor,r=this.label,J=this.pos,E=o.labels,Q=this.gridLine,fa=t?o.gridLineWidth:o.minorGridLineWidth,ka=t?o.gridLineColor:o.minorGridLineColor,$=t?o.gridLineDashStyle:o.minorGridLineDashStyle,F=this.mark,O=t?o.tickLength:o.minorTickLength,S=t?o.tickWidth:o.minorTickWidth||0,aa=t?o.tickColor:o.minorTickColor,Eb=t?o.tickPosition:o.minorTickPosition,kb=E.step,nb=n&&Zc||
                    cb,Qb;
                    Qb=R?G(J+fc,null,null,n)+cc:X+la+(Oa?(n&&pd||$a)-Ib-X:0);
                    nb=R?nb-ub+la-(Oa?Aa:0):nb-G(J+fc,null,null,n)-cc;
                    if(fa){
                        J=ha(J+fc,fa,n);
                        if(Q===Wa){
                            Q={
                                stroke:ka,
                                "stroke-width":fa
                            };
                
                            if($)Q.dashstyle=$;
                            if(t)Q.zIndex=1;
                            this.gridLine=Q=fa?ga.path(J).attr(Q).add(Ra):null
                        }!n&&Q&&J&&Q.animate({
                            d:J
                        })
                    }
                    if(S){
                        if(Eb==="inside")O=-O;
                        if(Oa)O=-O;
                        t=ga.crispLine([Za,Qb,nb,Ka,Qb+(R?0:-O),nb+(R?O:0)],S);
                        if(F)F.animate({
                            d:t
                        });else this.mark=ga.path(t).attr({
                            stroke:aa,
                            "stroke-width":S
                        }).add(na)
                    }
                    if(r&&!isNaN(Qb)){
                        Qb=Qb+
                        E.x-(fc&&R?fc*fb*(ec?-1:1):0);
                        nb=nb+E.y-(fc&&!R?fc*fb*(ec?1:-1):0);
                        K(E.y)||(nb+=ja(r.styles.lineHeight)*0.9-r.getBBox().height/2);
                        if(Yc)nb+=k/(kb||1)%Yc*16;
                        if(kb)r[k%kb?"hide":"show"]();
                        r[this.isNew?"attr":"animate"]({
                            x:Qb,
                            y:nb
                        })
                    }
                    this.isNew=false
                },
                destroy:function(){
                    yc(this)
                }
            };

            w.prototype={
                render:function(){
                    var k=this,n=k.options,t=n.label,r=k.label,J=n.width,E=n.to,Q=n.from,fa=n.value,ka,$=n.dashStyle,F=k.svgElem,O=[],S,aa,Eb=n.color;
                    aa=n.zIndex;
                    var kb=n.events;
                    if(ca){
                        Q=mc(Q);
                        E=mc(E);
                        fa=mc(fa)
                    }
                    if(J){
                        O=
                        ha(fa,J);
                        n={
                            stroke:Eb,
                            "stroke-width":J
                        };
            
                        if($)n.dashstyle=$
                    }else if(K(Q)&&K(E)){
                        Q=Ia(Q,ia);
                        E=sb(E,ra);
                        ka=ha(E);
                        if((O=ha(Q))&&ka)O.push(ka[4],ka[5],ka[1],ka[2]);else O=null;
                        n={
                            fill:Eb
                        }
                    }else return;
                    if(K(aa))n.zIndex=aa;
                    if(F)if(O)F.animate({
                        d:O
                    },null,F.onGetPath);
                    else{
                        F.hide();
                        F.onGetPath=function(){
                            F.show()
                        }
                    }else if(O&&O.length){
                        k.svgElem=F=ga.path(O).attr(n).add();
                        if(kb){
                            $=function(nb){
                                F.on(nb,function(Qb){
                                    kb[nb].apply(k,[Qb])
                                })
                            };
            
                            for(S in kb)$(S)
                        }
                    }
                    if(t&&K(t.text)&&O&&O.length&&Da>0&&Aa>0){
                        t=Ca({
                            align:R&&
                            ka&&"center",
                            x:R?!ka&&4:10,
                            verticalAlign:!R&&ka&&"middle",
                            y:R?ka?16:10:ka?6:-4,
                            rotation:R&&!ka&&90
                        },t);
                        if(!r)k.label=r=ga.text(t.text,0,0).attr({
                            align:t.textAlign||t.align,
                            rotation:t.rotation,
                            zIndex:aa
                        }).css(t.style).add();
                        ka=[O[1],O[4],A(O[6],O[1])];
                        O=[O[2],O[5],A(O[7],O[2])];
                        S=sb.apply(Fa,ka);
                        aa=sb.apply(Fa,O);
                        r.align(t,false,{
                            x:S,
                            y:aa,
                            width:Ia.apply(Fa,ka)-S,
                            height:Ia.apply(Fa,O)-aa
                        });
                        r.show()
                    }else r&&r.hide();
                    return k
                },
                destroy:function(){
                    yc(this);
                    nc(Pb,this)
                }
            };

            x.prototype={
                destroy:function(){
                    yc(this)
                },
                setTotal:function(k){
                    this.cum=this.total=k
                },
                render:function(k){
                    var n=this.options.formatter.call(this);
                    if(this.label)this.label.attr({
                        text:n,
                        visibility:ob
                    });else this.label=l.renderer.text(n,0,0).css(this.options.style).attr({
                        align:this.textAlign,
                        rotation:this.options.rotation,
                        visibility:ob
                    }).add(k)
                },
                setOffset:function(k,n){
                    var t=this.isNegative,r=I.translate(this.total),J=I.translate(0);
                    J=bb(r-J);
                    var E=l.xAxis[0].translate(this.x)+k,Q=l.plotHeight;
                    t={
                        x:va?t?r:r-J:E,
                        y:va?Q-E-n:t?Q-r-J:Q-r,
                        width:va?
                        J:n,
                        height:va?n:J
                    };
            
                    this.label&&this.label.align(this.alignOptions,null,t).attr({
                        visibility:Ab
                    })
                }
            };

            G=function(k,n,t,r,J){
                var E=1,Q=0,fa=r?Hb:fb;
                r=r?Bc:ia;
                fa||(fa=fb);
                if(t){
                    E*=-1;
                    Q=ya
                }
                if(ec){
                    E*=-1;
                    Q-=E*ya
                }
                if(n){
                    if(ec)k=ya-k;
                    k=k/fa+r;
                    if(ca&&J)k=Fa.pow(10,k)
                }else{
                    if(ca&&J)k=mc(k);
                    k=E*(k-r)*fa+Q
                }
                return k
            };
    
            ha=function(k,n,t){
                var r,J,E;
                k=G(k,null,null,t);
                var Q=t&&Zc||cb,fa=t&&pd||$a,ka;
                t=J=W(k+cc);
                r=E=W(Q-k-cc);
                if(isNaN(k))ka=true;
                else if(R){
                    r=ea;
                    E=Q-ub;
                    if(t<X||t>X+Da)ka=true
                }else{
                    t=X;
                    J=fa-Ib;
                    if(r<ea||r>
                        ea+Aa)ka=true
                }
                return ka?null:ga.crispLine([Za,t,r,Ka,J,E],n||0)
            };
    
            if(va&&xa&&ec===Wa)ec=true;
            sa(I,{
                addPlotBand:za,
                addPlotLine:za,
                adjustTickAmount:function(){
                    if(Ob&&!D&&!Ya&&!Ub){
                        var k=pc,n=Ba.length;
                        pc=Ob[qa];
                        if(n<pc){
                            for(;Ba.length<pc;)Ba.push(ta(Ba[Ba.length-1]+Ta));
                            fb*=(n-1)/(pc-1);
                            ra=Ba[Ba.length-1]
                        }
                        if(K(k)&&pc!==k)I.isDirty=true
                    }
                },
                categories:Ya,
                getExtremes:function(){
                    return{
                        min:ia,
                        max:ra,
                        dataMin:pa,
                        dataMax:wa,
                        userMin:Vb,
                        userMax:Gb
                    }
                },
                getPlotLinePath:ha,
                getThreshold:function(k){
                    if(ia>k)k=ia;
                    else if(ra<
                        k)k=ra;
                    return G(k,0,1)
                },
                isXAxis:xa,
                options:o,
                plotLinesAndBands:Pb,
                getOffset:function(){
                    var k=zb.length&&K(ia)&&K(ra),n=0,t=0,r=o.title,J=o.labels,E=[-1,1,1,-1][L],Q;
                    if(!na){
                        na=ga.g("axis").attr({
                            zIndex:7
                        }).add();
                        Ra=ga.g("grid").attr({
                            zIndex:1
                        }).add()
                    }
                    qc=0;
                    if(k||Ub){
                        u(Ba,function(fa){
                            if(mb[fa])mb[fa].addLabel();else mb[fa]=new q(fa);
                            if(L===0||L===2||{
                                1:"left",
                                3:"right"
                            }
                            [L]===J.align)qc=Ia(mb[fa].getLabelSize(),qc)
                        });
                        if(Yc)qc+=(Yc-1)*16
                    }else for(Q in mb){
                        mb[Q].destroy();
                        delete mb[Q]
                    }
                    if(r&&r.text){
                        if(!ba){
                            ba=
                            I.axisTitle=ga.text(r.text,0,0,r.useHTML).attr({
                                zIndex:7,
                                rotation:r.rotation||0,
                                align:r.textAlign||{
                                    low:"left",
                                    middle:"center",
                                    high:"right"
                                }
                                [r.align]
                            }).css(r.style).add();
                            ba.isNew=true
                        }
                        n=ba.getBBox()[R?"height":"width"];
                        t=A(r.margin,R?5:10)
                    }
                    la=E*(o.offset||Xb[L]);
                    md=qc+(L!==2&&qc&&E*o.labels[R?"y":"x"])+t;
                    Xb[L]=Ia(Xb[L],md+n+E*la)
                },
                render:eb,
                setCategories:function(k,n){
                    I.categories=p.categories=Ya=k;
                    u(zb,function(t){
                        t.translate();
                        t.setTooltipPoints(true)
                    });
                    I.isDirty=true;
                    A(n,true)&&l.redraw()
                },
                setExtremes:function(k,
                    n,t,r){
                    t=A(t,true);
                    Pa(I,"setExtremes",{
                        min:k,
                        max:n
                    },function(){
                        Vb=k;
                        Gb=n;
                        t&&l.redraw(r)
                    })
                },
                setScale:Ma,
                setTickPositions:da,
                translate:G,
                redraw:function(){
                    Yb.resetTracker&&Yb.resetTracker();
                    eb();
                    u(Pb,function(k){
                        k.render()
                    });
                    u(zb,function(k){
                        k.isDirty=true
                    })
                },
                removePlotBand:ab,
                removePlotLine:ab,
                reversed:ec,
                stacks:s,
                destroy:function(){
                    var k;
                    vb(I);
                    for(k in s){
                        yc(s[k]);
                        s[k]=null
                    }
                    if(I.stackTotalGroup)I.stackTotalGroup=I.stackTotalGroup.destroy();
                    u([mb,Wb,dc,Pb],function(n){
                        yc(n)
                    });
                    u([La,na,Ra,ba],function(n){
                        n&&
                        n.destroy()
                    });
                    La=na=Ra=ba=null
                }
            });
            for(od in B)Qa(I,od,B[od]);Ma()
        }
        function d(){
            var p={};
    
            return{
                add:function(q,w,x,V){
                    if(!p[q]){
                        w=ga.text(w,0,0).css(a.toolbar.itemStyle).align({
                            align:"right",
                            x:-Ib-20,
                            y:ea+30
                        }).on("click",V).attr({
                            align:"right",
                            zIndex:20
                        }).add();
                        p[q]=w
                    }
                },
                remove:function(q){
                    Qc(p[q].element);
                    p[q]=null
                }
            }
        }
        function e(p){
            function q(){
                var B=this.points||xc(this),D=B[0].series.xAxis,ca=this.x;
                D=D&&D.options.type==="datetime";
                var la=Sb(ca)||D,qa;
                qa=la?['<span style="font-size: 10px">'+(D?Xc("%A, %b %e, %Y",
                    ca):ca)+"</span>"]:[];
                u(B,function(ya){
                    qa.push(ya.point.tooltipFormatter(la))
                });
                return qa.join("<br/>")
            }
            function w(B,D){
                L=xa?B:(2*L+B)/3;
                s=xa?D:(s+D)/2;
                o.translate(L,s);
                qd=bb(B-L)>1||bb(D-s)>1?function(){
                    w(B,D)
                }:null
            }
            function x(){
                if(!xa){
                    var B=l.hoverPoints;
                    o.hide();
                    u(da,function(D){
                        D&&D.hide()
                    });
                    B&&u(B,function(D){
                        D.setState()
                    });
                    l.hoverPoints=null;
                    xa=true
                }
            }
            var V,N=p.borderWidth,ta=p.crosshairs,da=[],Ma=p.style,za=p.shared,eb=ja(Ma.padding),ab=N+eb,xa=true,Oa,R,L=0,s=0;
            Ma.padding=0;
            var o=ga.g("tooltip").attr({
                zIndex:8
            }).add(),
            I=ga.rect(ab,ab,0,0,p.borderRadius,N).attr({
                fill:p.backgroundColor,
                "stroke-width":N
            }).add(o).shadow(p.shadow),ba=ga.text("",eb+ab,ja(Ma.fontSize)+eb+ab,p.useHTML).attr({
                zIndex:1
            }).css(Ma).add(o);
            o.hide();
            return{
                shared:za,
                refresh:function(B){
                    var D,ca,la,qa=0,ya={},fb=[];
                    la=B.tooltipPos;
                    D=p.formatter||q;
                    ya=l.hoverPoints;
                    if(za){
                        ya&&u(ya,function(Hb){
                            Hb.setState()
                        });
                        l.hoverPoints=B;
                        u(B,function(Hb){
                            Hb.setState(Bb);
                            qa+=Hb.plotY;
                            fb.push(Hb.getLabelConfig())
                        });
                        ca=B[0].plotX;
                        qa=W(qa)/B.length;
                        ya={
                            x:B[0].category
                        };
                        ya.points=fb;
                        B=B[0]
                    }else ya=B.getLabelConfig();
                    ya=D.call(ya);
                    V=B.series;
                    ca=za?ca:B.plotX;
                    qa=za?qa:B.plotY;
                    D=W(la?la[0]:va?Da-qa:ca);
                    ca=W(la?la[1]:va?Aa-ca:qa);
                    la=za||!B.series.isCartesian||gc(D,ca);
                    if(ya===false||!la)x();
                    else{
                        if(xa){
                            o.show();
                            xa=false
                        }
                        ba.attr({
                            text:ya
                        });
                        la=ba.getBBox();
                        Oa=la.width+2*eb;
                        R=la.height+2*eb;
                        I.attr({
                            width:Oa,
                            height:R,
                            stroke:p.borderColor||B.color||V.color||"#606060"
                        });
                        D=fe(Oa,R,X,ea,Da,Aa,{
                            x:D,
                            y:ca
                        });
                        w(W(D.x-ab),W(D.y-ab))
                    }
                    if(ta){
                        ta=xc(ta);
                        for(D=ta.length;D--;){
                            ca=B.series[D?
                            "yAxis":"xAxis"];
                            if(ta[D]&&ca){
                                ca=ca.getPlotLinePath(B[D?"y":"x"],1);
                                if(da[D])da[D].attr({
                                    d:ca,
                                    visibility:Ab
                                });
                                else{
                                    la={
                                        "stroke-width":ta[D].width||1,
                                        stroke:ta[D].color||"#C0C0C0",
                                        zIndex:2
                                    };
                        
                                    if(ta[D].dashStyle)la.dashstyle=ta[D].dashStyle;
                                    da[D]=ga.path(ca).attr(la).add()
                                }
                            }
                        }
                    }
                },
                hide:x,
                destroy:function(){
                    u(da,function(B){
                        B&&B.destroy()
                    });
                    u([I,ba,o],function(B){
                        B&&B.destroy()
                    });
                    I=ba=o=null
                }
            }
        }
        function f(p){
            function q(L){
                var s,o=Ud&&ua.width/ua.body.scrollWidth-1,I,ba,B;
                L=L||db.event;
                if(!L.target)L.target=
                    L.srcElement;
                s=L.touches?L.touches.item(0):L;
                if(L.type!=="mousemove"||db.opera||o){
                    Jb=Fd(oa);
                    I=Jb.left;
                    ba=Jb.top
                }
                if(Mc){
                    B=L.x;
                    s=L.y
                }else if(s.layerX===Wa){
                    B=s.pageX-I;
                    s=s.pageY-ba
                }else{
                    B=L.layerX;
                    s=L.layerY
                }
                if(o){
                    B+=W((o+1)*I-I);
                    s+=W((o+1)*ba-ba)
                }
                return sa(L,{
                    chartX:B,
                    chartY:s
                })
            }
            function w(L){
                var s={
                    xAxis:[],
                    yAxis:[]
                };
        
                u(Va,function(o){
                    var I=o.translate,ba=o.isXAxis;
                    s[ba?"xAxis":"yAxis"].push({
                        axis:o,
                        value:I((va?!ba:ba)?L.chartX-X:Aa-L.chartY+ea,true)
                    })
                });
                return s
            }
            function x(){
                var L=l.hoverSeries,
                s=l.hoverPoint;
                s&&s.onMouseOut();
                L&&L.onMouseOut();
                hc&&hc.hide();
                rd=null
            }
            function V(){
                if(za){
                    var L={
                        xAxis:[],
                        yAxis:[]
                    },s=za.getBBox(),o=s.x-X,I=s.y-ea;
                    if(Ma){
                        u(Va,function(ba){
                            var B=ba.translate,D=ba.isXAxis,ca=va?!D:D,la=B(ca?o:Aa-I-s.height,true,0,0,1);
                            B=B(ca?o+s.width:Aa-I,true,0,0,1);
                            L[D?"xAxis":"yAxis"].push({
                                axis:ba,
                                min:sb(la,B),
                                max:Ia(la,B)
                            })
                        });
                        Pa(l,"selection",L,sd)
                    }
                    za=za.destroy()
                }
                l.mouseIsDown=td=Ma=false;
                vb(ua,Kb?"touchend":"mouseup",V)
            }
            function N(L){
                var s=K(L.pageX)?L.pageX:L.page.x;
                L=
                K(L.pageX)?L.pageY:L.page.y;
                Jb&&!gc(s-Jb.left-X,L-Jb.top-ea)&&x()
            }
            var ta,da,Ma,za,eb=z.zoomType,ab=/x/.test(eb),xa=/y/.test(eb),Oa=ab&&!va||xa&&va,R=xa&&!va||ab&&va;
            $c=function(){
                if(Cc){
                    Cc.translate(X,ea);
                    va&&Cc.attr({
                        width:l.plotWidth,
                        height:l.plotHeight
                    }).invert()
                }else l.trackerGroup=Cc=ga.g("tracker").attr({
                    zIndex:9
                }).add()
            };
            
            $c();
            if(p.enabled)l.tooltip=hc=e(p);
            (function(){
                oa.onmousedown=function(s){
                    s=q(s);
                    !Kb&&s.preventDefault&&s.preventDefault();
                    l.mouseIsDown=td=true;
                    ta=s.chartX;
                    da=s.chartY;
                    Qa(ua,
                        Kb?"touchend":"mouseup",V)
                };
            
                var L=function(s){
                    if(!(s&&s.touches&&s.touches.length>1)){
                        s=q(s);
                        if(!Kb)s.returnValue=false;
                        var o=s.chartX,I=s.chartY,ba=!gc(o-X,I-ea);
                        Jb||(Jb=Fd(oa));
                        if(Kb&&s.type==="touchstart")if(Ga(s.target,"isTracker"))l.runTrackerClick||s.preventDefault();else!ke&&!ba&&s.preventDefault();
                        if(ba){
                            if(o<X)o=X;
                            else if(o>X+Da)o=X+Da;
                            if(I<ea)I=ea;
                            else if(I>ea+Aa)I=ea+Aa
                        }
                        if(td&&s.type!=="touchstart"){
                            Ma=Math.sqrt(Math.pow(ta-o,2)+Math.pow(da-I,2));
                            if(Ma>10){
                                if(rc&&(ab||xa)&&gc(ta-X,da-ea))za||
                                    (za=ga.rect(X,ea,Oa?1:Da,R?1:Aa,0).attr({
                                        fill:z.selectionMarkerFill||"rgba(69,114,167,0.25)",
                                        zIndex:7
                                    }).add());
                                if(za&&Oa){
                                    o=o-ta;
                                    za.attr({
                                        width:bb(o),
                                        x:(o>0?0:o)+ta
                                    })
                                }
                                if(za&&R){
                                    I=I-da;
                                    za.attr({
                                        height:bb(I),
                                        y:(I>0?0:I)+da
                                    })
                                }
                            }
                        }else if(!ba){
                            var B;
                            I=l.hoverPoint;
                            o=l.hoverSeries;
                            var D,ca,la=$a,qa=va?s.chartY:s.chartX-X;
                            if(hc&&p.shared){
                                B=[];
                                D=Ha.length;
                                for(ca=0;ca<D;ca++)if(Ha[ca].visible&&Ha[ca].tooltipPoints.length){
                                    s=Ha[ca].tooltipPoints[qa];
                                    s._dist=bb(qa-s.plotX);
                                    la=sb(la,s._dist);
                                    B.push(s)
                                }
                                for(D=
                                    B.length;D--;)B[D]._dist>la&&B.splice(D,1);
                                if(B.length&&B[0].plotX!==rd){
                                    hc.refresh(B);
                                    rd=B[0].plotX
                                }
                            }
                            if(o&&o.tracker)(s=o.tooltipPoints[qa])&&s!==I&&s.onMouseOver()
                        }
                        return ba||!rc
                    }
                };

                oa.onmousemove=L;
                Qa(oa,"mouseleave",x);
                Qa(ua,"mousemove",N);
                oa.ontouchstart=function(s){
                    if(ab||xa)oa.onmousedown(s);
                    L(s)
                };
    
                oa.ontouchmove=L;
                oa.ontouchend=function(){
                    Ma&&x()
                };
    
                oa.onclick=function(s){
                    var o=l.hoverPoint;
                    s=q(s);
                    s.cancelBubble=true;
                    if(!Ma)if(o&&Ga(s.target,"isTracker")){
                        var I=o.plotX,ba=o.plotY;
                        sa(o,{
                            pageX:Jb.left+
                            X+(va?Da-ba:I),
                            pageY:Jb.top+ea+(va?Aa-I:ba)
                        });
                        Pa(o.series,"click",sa(s,{
                            point:o
                        }));
                        o.firePointEvent("click",s)
                    }else{
                        sa(s,w(s));
                        gc(s.chartX-X,s.chartY-ea)&&Pa(l,"click",s)
                    }
                    Ma=false
                }
            })();
            Vd=setInterval(function(){
                qd&&qd()
            },32);
            sa(this,{
                zoomX:ab,
                zoomY:xa,
                resetTracker:x,
                destroy:function(){
                    if(l.trackerGroup)l.trackerGroup=Cc=l.trackerGroup.destroy();
                    vb(ua,"mousemove",N);
                    oa.onclick=oa.onmousedown=oa.onmousemove=oa.ontouchstart=oa.ontouchend=oa.ontouchmove=null
                }
            })
        }
        function g(p){
            var q=p.type||z.type||z.defaultSeriesType,
            w=wb[q],x=l.hasRendered;
            if(x)if(va&&q==="column")w=wb.bar;
                else if(!va&&q==="bar")w=wb.column;
            q=new w;
            q.init(l,p);
            if(!x&&q.inverted)va=true;
            if(q.isCartesian)rc=q.isCartesian;
            Ha.push(q);
            return q
        }
        function h(){
            z.alignTicks!==false&&u(Va,function(p){
                p.adjustTickAmount()
            });
            Ob=null
        }
        function i(p){
            var q=l.isDirtyLegend,w,x=l.isDirtyBox,V=Ha.length,N=V,ta=l.clipRect;
            for(oc(p,l);N--;){
                p=Ha[N];
                if(p.isDirty&&p.options.stacking){
                    w=true;
                    break
                }
            }
            if(w)for(N=V;N--;){
                p=Ha[N];
                if(p.options.stacking)p.isDirty=true
            }
            u(Ha,
                function(da){
                    if(da.isDirty){
                        da.cleanData();
                        da.getSegments();
                        if(da.options.legendType==="point")q=true
                    }
                });
            if(q&&Dc.renderLegend){
                Dc.renderLegend();
                l.isDirtyLegend=false
            }
            if(rc){
                if(!ad){
                    Ob=null;
                    u(Va,function(da){
                        da.setScale()
                    })
                }
                h();
                Ec();
                u(Va,function(da){
                    if(da.isDirty||x){
                        da.redraw();
                        x=true
                    }
                })
            }
            if(x){
                ud();
                $c();
                if(ta){
                    Fc(ta);
                    ta.animate({
                        width:l.plotSizeX,
                        height:l.plotSizeY
                    })
                }
            }
            u(Ha,function(da){
                if(da.isDirty&&da.visible&&(!da.isCartesian||da.xAxis))da.redraw()
            });
            Yb&&Yb.resetTracker&&Yb.resetTracker();
            Pa(l,
                "redraw")
        }
        function j(){
            var p=a.xAxis||{},q=a.yAxis||{},w;
            p=xc(p);
            u(p,function(x,V){
                x.index=V;
                x.isX=true
            });
            q=xc(q);
            u(q,function(x,V){
                x.index=V
            });
            Va=p.concat(q);
            l.xAxis=[];
            l.yAxis=[];
            Va=sc(Va,function(x){
                w=new c(x);
                l[w.isXAxis?"xAxis":"yAxis"].push(w);
                return w
            });
            h()
        }
        function m(p,q){
            tc=Ca(a.title,p);
            Gc=Ca(a.subtitle,q);
            u([["title",p,tc],["subtitle",q,Gc]],function(w){
                var x=w[0],V=l[x],N=w[1];
                w=w[2];
                if(V&&N)V=V.destroy();
                if(w&&w.text&&!V)l[x]=ga.text(w.text,0,0,w.useHTML).attr({
                    align:w.align,
                    "class":"highcharts-"+
                    x,
                    zIndex:1
                }).css(w.style).add().align(w,false,Rb)
            })
        }
        function v(){
            pb=z.renderTo;
            Wd=uc+vd++;
            if(Sb(pb))pb=ua.getElementById(pb);
            pb.innerHTML="";
            if(!pb.offsetWidth){
                Zb=pb.cloneNode(0);
                Ja(Zb,{
                    position:ic,
                    top:"-9999px",
                    display:""
                });
                ua.body.appendChild(Zb)
            }
            bd=(Zb||pb).offsetWidth;
            Hc=(Zb||pb).offsetHeight;
            l.chartWidth=$a=z.width||bd||600;
            l.chartHeight=cb=z.height||(Hc>19?Hc:400);
            l.container=oa=hb(Tb,{
                className:"highcharts-container"+(z.className?" "+z.className:""),
                id:Wd
            },sa({
                position:Xd,
                overflow:ob,
                width:$a+
                Ua,
                height:cb+Ua,
                textAlign:"left"
            },z.style),Zb||pb);
            l.renderer=ga=z.forExport?new cd(oa,$a,cb,true):new dd(oa,$a,cb);
            var p,q;
            if(Yd&&oa.getBoundingClientRect){
                p=function(){
                    Ja(oa,{
                        left:0,
                        top:0
                    });
                    q=oa.getBoundingClientRect();
                    Ja(oa,{
                        left:-(q.left-ja(q.left))+Ua,
                        top:-(q.top-ja(q.top))+Ua
                    })
                };
            
                p();
                Qa(db,"resize",p);
                Qa(l,"destroy",function(){
                    vb(db,"resize",p)
                })
            }
        }
        function P(){
            function p(){
                var w=z.width||pb.offsetWidth,x=z.height||pb.offsetHeight;
                if(w&&x){
                    if(w!==bd||x!==Hc){
                        clearTimeout(q);
                        q=setTimeout(function(){
                            wd(w,
                                x,false)
                        },100)
                    }
                    bd=w;
                    Hc=x
                }
            }
            var q;
            Qa(db,"resize",p);
            Qa(l,"destroy",function(){
                vb(db,"resize",p)
            })
        }
        function T(){
            Pa(l,"endResize",null,function(){
                ad-=1
            })
        }
        function Y(){
            var p=a.labels,q=a.credits,w;
            m();
            Dc=l.legend=new le;
            Ec();
            u(Va,function(x){
                x.setTickPositions(true)
            });
            h();
            Ec();
            ud();
            rc&&u(Va,function(x){
                x.render()
            });
            if(!l.seriesGroup)l.seriesGroup=ga.g("series-group").attr({
                zIndex:3
            }).add();
            u(Ha,function(x){
                x.translate();
                x.setTooltipPoints();
                x.render()
            });
            p.items&&u(p.items,function(){
                var x=sa(p.style,this.style),
                V=ja(x.left)+X,N=ja(x.top)+ea+12;
                delete x.left;
                delete x.top;
                ga.text(this.html,V,N).attr({
                    zIndex:2
                }).css(x).add()
            });
            if(!l.toolbar)l.toolbar=d();
            if(q.enabled&&!l.credits){
                w=q.href;
                l.credits=ga.text(q.text,0,0).on("click",function(){
                    if(w)location.href=w
                }).attr({
                    align:q.position.align,
                    zIndex:8
                }).css(q.style).add().align(q.position)
            }
            $c();
            l.hasRendered=true;
            if(Zb){
                pb.appendChild(oa);
                Qc(Zb)
            }
        }
        function H(){
            var p,q=oa&&oa.parentNode;
            if(l!==null){
                Pa(l,"destroy");
                vb(db,"unload",H);
                vb(l);
                for(p=Va.length;p--;)Va[p]=
                    Va[p].destroy();
                for(p=Ha.length;p--;)Ha[p]=Ha[p].destroy();
                u(["title","subtitle","seriesGroup","clipRect","credits","tracker"],function(w){
                    var x=l[w];
                    if(x)l[w]=x.destroy()
                });
                u([vc,Dc,hc,ga,Yb],function(w){
                    w&&w.destroy&&w.destroy()
                });
                vc=Dc=hc=ga=Yb=null;
                if(oa){
                    oa.innerHTML="";
                    vb(oa);
                    q&&q.removeChild(oa);
                    oa=null
                }
                clearInterval(Vd);
                for(p in l)delete l[p];l=null
            }
        }
        function U(){
            if(!Ic&&db==db.top&&ua.readyState!=="complete")ua.attachEvent("onreadystatechange",function(){
                ua.detachEvent("onreadystatechange",
                    U);
                ua.readyState==="complete"&&U()
            });
            else{
                v();
                xd();
                yd();
                u(a.series||[],function(p){
                    g(p)
                });
                l.inverted=va=A(va,a.chart.inverted);
                j();
                l.render=Y;
                l.tracker=Yb=new f(a.tooltip);
                Y();
                Pa(l,"load");
                b&&b.apply(l,[l]);
                u(l.callbacks,function(p){
                    p.apply(l,[l])
                })
            }
        }
        Wc=Ca(Wc,Xa.xAxis);
        nd=Ca(nd,Xa.yAxis);
        Xa.xAxis=Xa.yAxis=null;
        a=Ca(Xa,a);
        var z=a.chart,M=z.margin;
        M=Nb(M)?M:[M,M,M,M];
        var y=A(z.marginTop,M[0]),C=A(z.marginRight,M[1]),Z=A(z.marginBottom,M[2]),Sa=A(z.marginLeft,M[3]),Na=z.spacingTop,Ea=z.spacingRight,
        gb=z.spacingBottom,Lb=z.spacingLeft,Rb,tc,Gc,ea,Ib,ub,X,Xb,pb,Zb,oa,Wd,bd,Hc,$a,cb,pd,Zc,vc,zd,Ad,ed,l=this,ke=(M=z.events)&&!!M.click,Bd,gc,hc,td,jc,Zd,Cd,Aa,Da,Yb,Cc,$c,Dc,$b,ac,Jb,rc=z.showAxes,ad=0,Va=[],Ob,Ha=[],va,ga,qd,Vd,rd,ud,Ec,xd,yd,wd,sd,$d,le=function(){
            function p(G,ha){
                var na=G.legendItem,Ra=G.legendLine,La=G.legendSymbol,pa=Oa.color,wa=ha?N.itemStyle.color:pa,zb=ha?G.color:pa;
                pa=ha?G.pointAttr[ib]:{
                    stroke:pa,
                    fill:pa
                };
        
                na&&na.css({
                    fill:wa
                });
                Ra&&Ra.attr({
                    stroke:zb
                });
                La&&La.attr(pa)
            }
            function q(G,
                ha,na){
                var Ra=G.legendItem,La=G.legendLine,pa=G.legendSymbol;
                G=G.checkbox;
                Ra&&Ra.attr({
                    x:ha,
                    y:na
                });
                La&&La.translate(ha,na-4);
                pa&&pa.attr({
                    x:ha+pa.xOff,
                    y:na+pa.yOff
                });
                if(G){
                    G.x=ha;
                    G.y=na
                }
            }
            function w(){
                u(za,function(G){
                    var ha=G.checkbox,na=qa.alignAttr;
                    ha&&Ja(ha,{
                        left:na.translateX+G.legendItemWidth+ha.x-40+Ua,
                        top:na.translateY+ha.y-11+Ua
                    })
                })
            }
            function x(G){
                var ha,na,Ra,La,pa=G.legendItem;
                La=G.series||G;
                var wa=La.options,zb=wa&&wa.borderWidth||0;
                if(!pa){
                    La=/^(bar|pie|area|column)$/.test(La.type);
                    G.legendItem=
                    pa=ga.text(N.labelFormatter.call(G),0,0).css(G.visible?ab:Oa).on("mouseover",function(){
                        G.setState(Bb);
                        pa.css(xa)
                    }).on("mouseout",function(){
                        pa.css(G.visible?ab:Oa);
                        G.setState()
                    }).on("click",function(){
                        var Gb=function(){
                            G.setVisible()
                        };
                
                        G.firePointEvent?G.firePointEvent("legendItemClick",null,Gb):Pa(G,"legendItemClick",null,Gb)
                    }).attr({
                        zIndex:2
                    }).add(qa);
                    if(!La&&wa&&wa.lineWidth){
                        var Vb={
                            "stroke-width":wa.lineWidth,
                            zIndex:2
                        };
            
                        if(wa.dashStyle)Vb.dashstyle=wa.dashStyle;
                        G.legendLine=ga.path([Za,-da-Ma,
                            0,Ka,-Ma,0]).attr(Vb).add(qa)
                    }
                    if(La)ha=ga.rect(na=-da-Ma,Ra=-11,da,12,2).attr({
                        zIndex:3
                    }).add(qa);
                    else if(wa&&wa.marker&&wa.marker.enabled)ha=ga.symbol(G.symbol,na=-da/2-Ma,Ra=-4,wa.marker.radius).attr({
                        zIndex:3
                    }).add(qa);
                    if(ha){
                        ha.xOff=na+zb%2/2;
                        ha.yOff=Ra+zb%2/2
                    }
                    G.legendSymbol=ha;
                    p(G,G.visible);
                    if(wa&&wa.showCheckbox){
                        G.checkbox=hb("input",{
                            type:"checkbox",
                            checked:G.selected,
                            defaultChecked:G.selected
                        },N.itemCheckboxStyle,oa);
                        Qa(G.checkbox,"click",function(Gb){
                            Pa(G,"checkboxClick",{
                                checked:Gb.target.checked
                            },
                            function(){
                                G.select()
                            })
                        })
                    }
                }
                ha=pa.getBBox();
                na=G.legendItemWidth=N.itemWidth||da+Ma+ha.width+R;
                B=ha.height;
                if(ta&&o-s+na>(fb||$a-2*R-s)){
                    o=s;
                    I+=B
                }
                ba=I;
                q(G,o,I);
                if(ta)o+=na;else I+=B;
                ya=fb||Ia(ta?o-s:na,ya)
            }
            function V(){
                o=s;
                I=L;
                ba=ya=0;
                qa||(qa=ga.g("legend").attr({
                    zIndex:7
                }).add());
                za=[];
                u(Hb,function(Ra){
                    var La=Ra.options;
                    if(La.showInLegend)za=za.concat(La.legendType==="point"?Ra.data:Ra)
                });
                Hd(za,function(Ra,La){
                    return(Ra.options.legendIndex||0)-(La.options.legendIndex||0)
                });
                cc&&za.reverse();
                u(za,
                    x);
                $b=fb||ya;
                ac=ba-L+B;
                if(ca||la){
                    $b+=2*R;
                    ac+=2*R;
                    if(D){
                        if($b>0&&ac>0){
                            D[D.isNew?"attr":"animate"](D.crisp(null,null,null,$b,ac));
                            D.isNew=false
                        }
                    }else{
                        D=ga.rect(0,0,$b,ac,N.borderRadius,ca||0).attr({
                            stroke:N.borderColor,
                            "stroke-width":ca||0,
                            fill:la||jb
                        }).add(qa).shadow(N.shadow);
                        D.isNew=true
                    }
                    D[za.length?"show":"hide"]()
                }
                for(var G=["left","right","top","bottom"],ha,na=4;na--;){
                    ha=G[na];
                    if(eb[ha]&&eb[ha]!=="auto"){
                        N[na<2?"align":"verticalAlign"]=ha;
                        N[na<2?"x":"y"]=ja(eb[ha])*(na%2?-1:1)
                    }
                }
                za.length&&
                qa.align(sa(N,{
                    width:$b,
                    height:ac
                }),true,Rb);
                ad||w()
            }
            var N=l.options.legend;
            if(N.enabled){
                var ta=N.layout==="horizontal",da=N.symbolWidth,Ma=N.symbolPadding,za,eb=N.style,ab=N.itemStyle,xa=N.itemHoverStyle,Oa=N.itemHiddenStyle,R=ja(eb.padding),L=18,s=4+R+da+Ma,o,I,ba,B=0,D,ca=N.borderWidth,la=N.backgroundColor,qa,ya,fb=N.width,Hb=l.series,cc=N.reversed;
                V();
                Qa(l,"endResize",w);
                return{
                    colorizeItem:p,
                    destroyItem:function(G){
                        var ha=G.checkbox;
                        u(["legendItem","legendLine","legendSymbol"],function(na){
                            G[na]&&
                            G[na].destroy()
                        });
                        ha&&Qc(G.checkbox)
                    },
                    renderLegend:V,
                    destroy:function(){
                        if(D)D=D.destroy();
                        if(qa)qa=qa.destroy()
                    }
                }
            }
        };

        gc=function(p,q){
            return p>=0&&p<=Da&&q>=0&&q<=Aa
        };
    
        $d=function(){
            Pa(l,"selection",{
                resetSelection:true
            },sd);
            l.toolbar.remove("zoom")
        };
    
        sd=function(p){
            var q=Xa.lang,w=l.pointCount<100;
            l.toolbar.add("zoom",q.resetZoom,q.resetZoomTitle,$d);
            !p||p.resetSelection?u(Va,function(x){
                x.setExtremes(null,null,false,w)
            }):u(p.xAxis.concat(p.yAxis),function(x){
                var V=x.axis;
                if(l.tracker[V.isXAxis?"zoomX":
                    "zoomY"])V.setExtremes(x.min,x.max,false,w)
            });
            i()
        };
    
        Ec=function(){
            var p=a.legend,q=A(p.margin,10),w=p.x,x=p.y,V=p.align,N=p.verticalAlign,ta;
            xd();
            if((l.title||l.subtitle)&&!K(y))if(ta=Ia(l.title&&!tc.floating&&!tc.verticalAlign&&tc.y||0,l.subtitle&&!Gc.floating&&!Gc.verticalAlign&&Gc.y||0))ea=Ia(ea,ta+A(tc.margin,15)+Na);
            if(p.enabled&&!p.floating)if(V==="right")K(C)||(Ib=Ia(Ib,$b-w+q+Ea));
                else if(V==="left")K(Sa)||(X=Ia(X,$b+w+q+Lb));
                else if(N==="top")K(y)||(ea=Ia(ea,ac+x+q+Na));
                else if(N==="bottom")K(Z)||
                    (ub=Ia(ub,ac-x+q+gb));
            rc&&u(Va,function(da){
                da.getOffset()
            });
            K(Sa)||(X+=Xb[3]);
            K(y)||(ea+=Xb[0]);
            K(Z)||(ub+=Xb[2]);
            K(C)||(Ib+=Xb[1]);
            yd()
        };
    
        wd=function(p,q,w){
            var x=l.title,V=l.subtitle;
            ad+=1;
            oc(w,l);
            Zc=cb;
            pd=$a;
            l.chartWidth=$a=W(p);
            l.chartHeight=cb=W(q);
            Ja(oa,{
                width:$a+Ua,
                height:cb+Ua
            });
            ga.setSize($a,cb,w);
            Da=$a-X-Ib;
            Aa=cb-ea-ub;
            Ob=null;
            u(Va,function(N){
                N.isDirty=true;
                N.setScale()
            });
            u(Ha,function(N){
                N.isDirty=true
            });
            l.isDirtyLegend=true;
            l.isDirtyBox=true;
            Ec();
            x&&x.align(null,null,Rb);
            V&&V.align(null,
                null,Rb);
            i(w);
            Zc=null;
            Pa(l,"resize");
            zc===false?T():setTimeout(T,zc&&zc.duration||500)
        };
    
        yd=function(){
            l.plotLeft=X=W(X);
            l.plotTop=ea=W(ea);
            l.plotWidth=Da=W($a-X-Ib);
            l.plotHeight=Aa=W(cb-ea-ub);
            l.plotSizeX=va?Aa:Da;
            l.plotSizeY=va?Da:Aa;
            Rb={
                x:Lb,
                y:Na,
                width:$a-Lb-Ea,
                height:cb-Na-gb
            }
        };

        xd=function(){
            ea=A(y,Na);
            Ib=A(C,Ea);
            ub=A(Z,gb);
            X=A(Sa,Lb);
            Xb=[0,0,0,0]
        };
    
        ud=function(){
            var p=z.borderWidth||0,q=z.backgroundColor,w=z.plotBackgroundColor,x=z.plotBackgroundImage,V,N={
                x:X,
                y:ea,
                width:Da,
                height:Aa
            };
    
            V=p+(z.shadow?
                8:0);
            if(p||q)if(vc)vc.animate(vc.crisp(null,null,null,$a-V,cb-V));else vc=ga.rect(V/2,V/2,$a-V,cb-V,z.borderRadius,p).attr({
                stroke:z.borderColor,
                "stroke-width":p,
                fill:q||jb
            }).add().shadow(z.shadow);
            if(w)if(zd)zd.animate(N);else zd=ga.rect(X,ea,Da,Aa,0).attr({
                fill:w
            }).add().shadow(z.plotShadow);
            if(x)if(Ad)Ad.animate(N);else Ad=ga.image(x,X,ea,Da,Aa).add();
            if(z.plotBorderWidth)if(ed)ed.animate(ed.crisp(null,X,ea,Da,Aa));else ed=ga.rect(X,ea,Da,Aa,0,z.plotBorderWidth).attr({
                stroke:z.plotBorderColor,
                "stroke-width":z.plotBorderWidth,
                zIndex:4
            }).add();
            l.isDirtyBox=false
        };
    
        Qa(db,"unload",H);
        z.reflow!==false&&Qa(l,"load",P);
        if(M)for(Bd in M)Qa(l,Bd,M[Bd]);l.options=a;
        l.series=Ha;
        l.addSeries=function(p,q,w){
            var x;
            if(p){
                oc(w,l);
                q=A(q,true);
                Pa(l,"addSeries",{
                    options:p
                },function(){
                    x=g(p);
                    x.isDirty=true;
                    l.isDirtyLegend=true;
                    q&&l.redraw()
                })
            }
            return x
        };
    
        l.animation=A(z.animation,true);
        l.destroy=H;
        l.get=function(p){
            var q,w,x;
            for(q=0;q<Va.length;q++)if(Va[q].options.id===p)return Va[q];for(q=0;q<Ha.length;q++)if(Ha[q].options.id===
                p)return Ha[q];for(q=0;q<Ha.length;q++){
                x=Ha[q].data;
                for(w=0;w<x.length;w++)if(x[w].id===p)return x[w]
            }
            return null
        };
    
        l.getSelectedPoints=function(){
            var p=[];
            u(Ha,function(q){
                p=p.concat(Dd(q.data,function(w){
                    return w.selected
                }))
            });
            return p
        };
    
        l.getSelectedSeries=function(){
            return Dd(Ha,function(p){
                return p.selected
            })
        };
    
        l.hideLoading=function(){
            fd(jc,{
                opacity:0
            },{
                duration:a.loading.hideDuration,
                complete:function(){
                    Ja(jc,{
                        display:jb
                    })
                }
            });
            Cd=false
        };

        l.isInsidePlot=gc;
        l.redraw=i;
        l.setSize=wd;
        l.setTitle=m;
        l.showLoading=
        function(p){
            var q=a.loading;
            if(!jc){
                jc=hb(Tb,{
                    className:"highcharts-loading"
                },sa(q.style,{
                    left:X+Ua,
                    top:ea+Ua,
                    width:Da+Ua,
                    height:Aa+Ua,
                    zIndex:10,
                    display:jb
                }),oa);
                Zd=hb("span",null,q.labelStyle,jc)
            }
            Zd.innerHTML=p||a.lang.loading;
            if(!Cd){
                Ja(jc,{
                    opacity:0,
                    display:""
                });
                fd(jc,{
                    opacity:q.style.opacity
                },{
                    duration:q.showDuration
                });
                Cd=true
            }
        };

        l.pointCount=0;
        l.counters=new Gd;
        U()
    }
    var ua=document,db=window,Fa=Math,W=Fa.round,lb=Fa.floor,ld=Fa.ceil,Ia=Fa.max,sb=Fa.min,bb=Fa.abs,qb=Fa.cos,Cb=Fa.sin,kc=Fa.PI,ae=
    kc*2/360,wc=navigator.userAgent,Mc=/msie/i.test(wc)&&!db.opera,Jc=ua.documentMode===8,Ud=/AppleWebKit/.test(wc),Yd=/Firefox/.test(wc),Ic=!!ua.createElementNS&&!!ua.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect,me=Yd&&parseInt(wc.split("Firefox/")[1],10)<4,dd,Kb=ua.documentElement.ontouchstart!==undefined,be={},vd=0,tb=1,Rc,Xa,Xc,zc,Kc,Wa,Tb="div",ic="absolute",Xd="relative",ob="hidden",uc="highcharts-",Ab="visible",Ua="px",jb="none",Za="M",Ka="L",ce="rgba(192,192,192,"+(Ic?1.0E-6:
        0.0020)+")",ib="",Bb="hover",Nc,hd,id,jd,Ac,Oc,Pc,Jd,Kd,kd,Ld,Md,ma=db.HighchartsAdapter,Db=ma||{},u=Db.each,Dd=Db.grep,sc=Db.map,Ca=Db.merge,Qa=Db.addEvent,vb=Db.removeEvent,Pa=Db.fireEvent,fd=Db.animate,Fc=Db.stop,wb={};

    Xc=function(a,b,c){
        function d(P){
            return P.toString().replace(/^([0-9])$/,"0$1")
        }
        if(!K(b)||isNaN(b))return"Invalid date";
        a=A(a,"%Y-%m-%d %H:%M:%S");
        b=new Date(b*tb);
        var e,f=b[id](),g=b[jd](),h=b[Ac](),i=b[Oc](),j=b[Pc](),m=Xa.lang,v=m.weekdays;
        b={
            a:v[g].substr(0,3),
            A:v[g],
            d:d(h),
            e:h,
            b:m.shortMonths[i],
            B:m.months[i],
            m:d(i+1),
            y:j.toString().substr(2,2),
            Y:j,
            H:d(f),
            I:d(f%12||12),
            l:f%12||12,
            M:d(b[hd]()),
            p:f<12?"AM":"PM",
            P:f<12?"am":"pm",
            S:d(b.getSeconds())
        };
        
        for(e in b)a=a.replace("%"+e,b[e]);return c?a.substr(0,1).toUpperCase()+a.substr(1):a
    };
    
    Gd.prototype={
        wrapColor:function(a){
            if(this.color>=a)this.color=0
        },
        wrapSymbol:function(a){
            if(this.symbol>=a)this.symbol=0
        }
    };

    Kc={
        init:function(a,b,c){
            b=b||"";
            var d=a.shift,e=b.indexOf("C")>-1,f=e?7:3,g;
            b=b.split(" ");
            c=[].concat(c);
            var h,
            i,j=function(m){
                for(g=m.length;g--;)m[g]===Za&&m.splice(g+1,0,m[g+1],m[g+2],m[g+1],m[g+2])
            };
                
            if(e){
                j(b);
                j(c)
            }
            if(a.isArea){
                h=b.splice(b.length-6,6);
                i=c.splice(c.length-6,6)
            }
            if(d){
                c=[].concat(c).splice(0,f).concat(c);
                a.shift=false
            }
            if(b.length)for(a=c.length;b.length<a;){
                d=[].concat(b).splice(b.length-f,f);
                if(e){
                    d[f-6]=d[f-2];
                    d[f-5]=d[f-1]
                }
                b=b.concat(d)
            }
            if(h){
                b=b.concat(h);
                c=c.concat(i)
            }
            return[b,c]
        },
        step:function(a,b,c,d){
            var e=[],f=a.length;
            if(c===1)e=d;
            else if(f===b.length&&c<1)for(;f--;){
                d=parseFloat(a[f]);
                e[f]=isNaN(d)?a[f]:c*parseFloat(b[f]-d)+d
            }else e=b;
            return e
        }
    };

    ma&&ma.init&&ma.init(Kc);
    if(!ma&&db.jQuery){
        var Mb=jQuery;
        u=function(a,b){
            for(var c=0,d=a.length;c<d;c++)if(b.call(a[c],a[c],c,a)===false)return c
        };
            
        Dd=Mb.grep;
        sc=function(a,b){
            for(var c=[],d=0,e=a.length;d<e;d++)c[d]=b.call(a[d],a[d],d,a);
            return c
        };
        
        Ca=function(){
            var a=arguments;
            return Mb.extend(true,null,a[0],a[1],a[2],a[3])
        };
        
        Qa=function(a,b,c){
            Mb(a).bind(b,c)
        };
        
        vb=function(a,b,c){
            var d=ua.removeEventListener?"removeEventListener":"detachEvent";
            if(ua[d]&&!a[d])a[d]=function(){};
            
            Mb(a).unbind(b,c)
        };
        
        Pa=function(a,b,c,d){
            var e=Mb.Event(b),f="detached"+b;
            sa(e,c);
            if(a[b]){
                a[f]=a[b];
                a[b]=null
            }
            Mb(a).trigger(e);
            if(a[f]){
                a[b]=a[f];
                a[f]=null
            }
            d&&!e.isDefaultPrevented()&&d(e)
        };
        
        fd=function(a,b,c){
            var d=Mb(a);
            if(b.d){
                a.toD=b.d;
                b.d=1
            }
            d.stop();
            d.animate(b,c)
        };
        
        Fc=function(a){
            Mb(a).stop()
        };
        
        Mb.extend(Mb.easing,{
            easeOutQuad:function(a,b,c,d,e){
                return-d*(b/=e)*(b-2)+c
            }
        });
        var de=jQuery.fx,ee=de.step;
        u(["cur","_default","width","height"],function(a,b){
            var c=b?
            ee:de.prototype,d=c[a],e;
            if(d)c[a]=function(f){
                f=b?f:this;
                e=f.elem;
                return e.attr?e.attr(f.prop,f.now):d.apply(this,arguments)
            }
        });
        ee.d=function(a){
            var b=a.elem;
            if(!a.started){
                var c=Kc.init(b,b.d,b.toD);
                a.start=c[0];
                a.end=c[1];
                a.started=true
            }
            b.attr("d",Kc.step(a.start,a.end,a.pos,b.toD))
        }
    }
    ma={
        enabled:true,
        align:"center",
        x:0,
        y:15,
        style:{
            color:"#666",
            fontSize:"11px",
            lineHeight:"14px"
        }
    };

    Xa={
        colors:["#4572A7","#AA4643","#89A54E","#80699B","#3D96AE","#DB843D","#92A8CD","#A47D7C","#B5CA92"],
        symbols:["circle",
        "diamond","square","triangle","triangle-down"],
        lang:{
            loading:"Loading...",
            months:["January","February","March","April","May","June","July","August","September","October","November","December"],
            shortMonths:["Jan","Feb","Mar","Apr","May","June","Jul","Aug","Sep","Oct","Nov","Dec"],
            weekdays:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],
            decimalPoint:".",
            resetZoom:"Reset zoom",
            resetZoomTitle:"Reset zoom level 1:1",
            thousandsSep:","
        },
        global:{
            useUTC:true
        },
        chart:{
            borderColor:"#4572A7",
            borderRadius:5,
            defaultSeriesType:"line",
            ignoreHiddenSeries:true,
            spacingTop:10,
            spacingRight:10,
            spacingBottom:15,
            spacingLeft:10,
            style:{
                fontFamily:'"Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif',
                fontSize:"12px"
            },
            backgroundColor:"#FFFFFF",
            plotBorderColor:"#C0C0C0"
        },
        title:{
            text:"Chart title",
            align:"center",
            y:15,
            style:{
                color:"#3E576F",
                fontSize:"16px"
            }
        },
        subtitle:{
            text:"",
            align:"center",
            y:30,
            style:{
                color:"#6D869F"
            }
        },
        plotOptions:{
            line:{
                allowPointSelect:false,
                showCheckbox:false,
                animation:{
                    duration:1E3
                },
                events:{},
                lineWidth:2,
                shadow:true,
                marker:{
                    enabled:true,
                    lineWidth:0,
                    radius:4,
                    lineColor:"#FFFFFF",
                    states:{
                        hover:{},
                        select:{
                            fillColor:"#FFFFFF",
                            lineColor:"#000000",
                            lineWidth:2
                        }
                    }
                },
                point:{
                    events:{}
                },
                dataLabels:Ca(ma,{
                    enabled:false,
                    y:-6,
                    formatter:function(){
                        return this.y
                    }
                }),
                showInLegend:true,
                states:{
                    hover:{
                        marker:{}
                    },
                    select:{
                        marker:{}
                    }
                },
                stickyTracking:true
            }
        },
        labels:{
            style:{
                position:ic,
                color:"#3E576F"
            }
        },
        legend:{
            enabled:true,
            align:"center",
            layout:"horizontal",
            labelFormatter:function(){
                return this.name
            },
            borderWidth:1,
            borderColor:"#909090",
            borderRadius:5,
            shadow:false,
            style:{
                padding:"5px"
            },
            itemStyle:{
                cursor:"pointer",
                color:"#3E576F"
            },
            itemHoverStyle:{
                cursor:"pointer",
                color:"#000000"
            },
            itemHiddenStyle:{
                color:"#C0C0C0"
            },
            itemCheckboxStyle:{
                position:ic,
                width:"13px",
                height:"13px"
            },
            symbolWidth:16,
            symbolPadding:5,
            verticalAlign:"bottom",
            x:0,
            y:0
        },
        loading:{
            hideDuration:100,
            labelStyle:{
                fontWeight:"bold",
                position:Xd,
                top:"1em"
            },
            showDuration:100,
            style:{
                position:ic,
                backgroundColor:"white",
                opacity:0.5,
                textAlign:"center"
            }
        },
        tooltip:{
            enabled:true,
            backgroundColor:"rgba(255, 255, 255, .85)",
            borderWidth:2,
            borderRadius:5,
            shadow:true,
            snap:Kb?25:10,
            style:{
                color:"#333333",
                fontSize:"12px",
                padding:"5px",
                whiteSpace:"nowrap"
            }
        },
        toolbar:{
            itemStyle:{
                color:"#4572A7",
                cursor:"pointer"
            }
        },
        credits:{
            enabled:true,
            text:"",
            href:"",
            position:{
                align:"right",
                x:-10,
                verticalAlign:"bottom",
                y:-5
            },
            style:{
                cursor:"pointer",
                color:"#909090",
                fontSize:"10px"
            }
        }
    };

    var Wc={
        dateTimeLabelFormats:{
            second:"%H:%M:%S",
            minute:"%H:%M",
            hour:"%H:%M",
            day:"%e. %b",
            week:"%e. %b",
            month:"%b '%y",
            year:"%Y"
        },
        endOnTick:false,
        gridLineColor:"#C0C0C0",
        labels:ma,
        lineColor:"#C0D0E0",
        lineWidth:1,
        max:null,
        min:null,
        minPadding:0.01,
        maxPadding:0.01,
        minorGridLineColor:"#E0E0E0",
        minorGridLineWidth:1,
        minorTickColor:"#A0A0A0",
        minorTickLength:2,
        minorTickPosition:"outside",
        startOfWeek:1,
        startOnTick:false,
        tickColor:"#C0D0E0",
        tickLength:5,
        tickmarkPlacement:"between",
        tickPixelInterval:100,
        tickPosition:"outside",
        tickWidth:1,
        title:{
            align:"middle",
            style:{
                color:"#6D869F",
                fontWeight:"bold"
            }
        },
        type:"linear"
    },nd=Ca(Wc,{
        endOnTick:true,
        gridLineWidth:1,
        tickPixelInterval:72,
        showLastLabel:true,
        labels:{
            align:"right",
            x:-8,
            y:3
        },
        lineWidth:0,
        maxPadding:0.05,
        minPadding:0.05,
        startOnTick:true,
        tickWidth:0,
        title:{
            rotation:270,
            text:"Y-values"
        },
        stackLabels:{
            enabled:false,
            formatter:function(){
                return this.total
            },
            style:ma.style
        }
    }),ie={
        labels:{
            align:"right",
            x:-8,
            y:null
        },
        title:{
            rotation:270
        }
    },he={
        labels:{
            align:"left",
            x:8,
            y:null
        },
        title:{
            rotation:90
        }
    },Td={
        labels:{
            align:"center",
            x:0,
            y:14
        },
        title:{
            rotation:0
        }
    },
    ge=Ca(Td,{
        labels:{
            y:-5
        }
    }),xb=Xa.plotOptions;
    ma=xb.line;
    xb.spline=Ca(ma);
    xb.scatter=Ca(ma,{
        lineWidth:0,
        states:{
            hover:{
                lineWidth:0
            }
        }
    });
    xb.area=Ca(ma,{});
    xb.areaspline=Ca(xb.area);
    xb.column=Ca(ma,{
        borderColor:"#FFFFFF",
        borderWidth:1,
        borderRadius:0,
        groupPadding:0.2,
        marker:null,
        pointPadding:0.1,
        minPointLength:0,
        states:{
            hover:{
                brightness:0.1,
                shadow:false
            },
            select:{
                color:"#C0C0C0",
                borderColor:"#000000",
                shadow:false
            }
        },
        dataLabels:{
            y:null,
            verticalAlign:null
        }
    });
    xb.bar=Ca(xb.column,{
        dataLabels:{
            align:"left",
            x:5,
            y:0
        }
    });
    xb.pie=Ca(ma,{
        borderColor:"#FFFFFF",
        borderWidth:1,
        center:["50%","50%"],
        colorByPoint:true,
        dataLabels:{
            distance:30,
            enabled:true,
            formatter:function(){
                return this.point.name
            },
            y:5
        },
        legendType:"point",
        marker:null,
        size:"75%",
        showInLegend:false,
        slicedOffset:10,
        states:{
            hover:{
                brightness:0.1,
                shadow:false
            }
        }
    });
    Id();
    var bc=function(a){
        var b=[],c;
        (function(d){
            if(c=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]?(?:\.[0-9]+)?)\s*\)/.exec(d))b=[ja(c[1]),ja(c[2]),ja(c[3]),parseFloat(c[4],
                10)];
            else if(c=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(d))b=[ja(c[1],16),ja(c[2],16),ja(c[3],16),1]
        })(a);
        return{
            get:function(d){
                return b&&!isNaN(b[0])?d==="rgb"?"rgb("+b[0]+","+b[1]+","+b[2]+")":d==="a"?b[3]:"rgba("+b.join(",")+")":a
            },
            brighten:function(d){
                if(lc(d)&&d!==0){
                    var e;
                    for(e=0;e<3;e++){
                        b[e]+=ja(d*255);
                        if(b[e]<0)b[e]=0;
                        if(b[e]>255)b[e]=255
                    }
                }
                return this
            },
            setOpacity:function(d){
                b[3]=d;
                return this
            }
        }
    };

    Sc.prototype={
        init:function(a,b){
            this.element=ua.createElementNS("http://www.w3.org/2000/svg",
                b);
            this.renderer=a
        },
        animate:function(a,b,c){
            if(b=A(b,zc,true)){
                b=Ca(b);
                if(c)b.complete=c;
                fd(this,a,b)
            }else{
                this.attr(a);
                c&&c()
            }
        },
        attr:function(a,b){
            var c,d,e,f,g=this.element,h=g.nodeName,i=this.renderer,j,m=this.shadows,v=this.htmlNode,P,T=this;
            if(Sb(a)&&K(b)){
                c=a;
                a={};
        
                a[c]=b
            }
            if(Sb(a)){
                c=a;
                if(h==="circle")c={
                    x:"cx",
                    y:"cy"
                }
                [c]||c;
                else if(c==="strokeWidth")c="stroke-width";
                T=Ga(g,c)||this[c]||0;
                if(c!=="d"&&c!=="visibility")T=parseFloat(T)
            }else for(c in a){
                j=false;
                d=a[c];
                if(c==="d"){
                    if(d&&d.join)d=
                        d.join(" ");
                    if(/(NaN| {2}|^$)/.test(d))d="M 0 0";
                    this.d=d
                }else if(c==="x"&&h==="text"){
                    for(e=0;e<g.childNodes.length;e++){
                        f=g.childNodes[e];
                        Ga(f,"x")===Ga(g,"x")&&Ga(f,"x",d)
                    }
                    if(this.rotation)Ga(g,"transform","rotate("+this.rotation+" "+d+" "+ja(a.y||Ga(g,"y"))+")")
                }else if(c==="fill")d=i.color(d,g,c);
                else if(h==="circle"&&(c==="x"||c==="y"))c={
                    x:"cx",
                    y:"cy"
                }
                [c]||c;
                else if(c==="translateX"||c==="translateY"||c==="rotation"||c==="verticalAlign"){
                    this[c]=d;
                    this.updateTransform();
                    j=true
                }else if(c===
                    "stroke")d=i.color(d,g,c);
                else if(c==="dashstyle"){
                    c="stroke-dasharray";
                    d=d&&d.toLowerCase();
                    if(d==="solid")d=jb;
                    else if(d){
                        d=d.replace("shortdashdotdot","3,1,1,1,1,1,").replace("shortdashdot","3,1,1,1").replace("shortdot","1,1,").replace("shortdash","3,1,").replace("longdash","8,3,").replace(/dot/g,"1,3,").replace("dash","4,3,").replace(/,$/,"").split(",");
                        for(e=d.length;e--;)d[e]=ja(d[e])*a["stroke-width"];
                        d=d.join(",")
                    }
                }else if(c==="isTracker")this[c]=d;
                else if(c==="width")d=ja(d);
                else if(c===
                    "align"){
                    c="text-anchor";
                    d={
                        left:"start",
                        center:"middle",
                        right:"end"
                    }
                    [d]
                }else if(c==="title"){
                    e=ua.createElementNS("http://www.w3.org/2000/svg","title");
                    e.appendChild(ua.createTextNode(d));
                    g.appendChild(e)
                }
                if(c==="strokeWidth")c="stroke-width";
                if(Ud&&c==="stroke-width"&&d===0)d=1.0E-6;
                if(this.symbolName&&/^(x|y|r|start|end|innerR)/.test(c)){
                    if(!P){
                        this.symbolAttr(a);
                        P=true
                    }
                    j=true
                }
                if(m&&/^(width|height|visibility|x|y|d)$/.test(c))for(e=m.length;e--;)Ga(m[e],c,d);
                if((c==="width"||c==="height")&&h===
                    "rect"&&d<0)d=0;
                if(c==="text"){
                    this.textStr=d;
                    this.added&&i.buildText(this)
                }else j||Ga(g,c,d);
                if(v&&(c==="x"||c==="y"||c==="translateX"||c==="translateY"||c==="visibility")){
                    e=v.length?v:[this];
                    f=e.length;
                    var Y;
                    for(Y=0;Y<f;Y++){
                        v=e[Y];
                        j=v.getBBox();
                        v=v.htmlNode;
                        Ja(v,sa(this.styles,{
                            left:j.x+(this.translateX||0)+Ua,
                            top:j.y+(this.translateY||0)+Ua
                        }));
                        c==="visibility"&&Ja(v,{
                            visibility:d
                        })
                    }
                }
            }
            return T
        },
        symbolAttr:function(a){
            var b=this;
            u(["x","y","r","start","end","width","height","innerR"],function(c){
                b[c]=
                A(a[c],b[c])
            });
            b.attr({
                d:b.renderer.symbols[b.symbolName](W(b.x*2)/2,W(b.y*2)/2,b.r,{
                    start:b.start,
                    end:b.end,
                    width:b.width,
                    height:b.height,
                    innerR:b.innerR
                })
            })
        },
        clip:function(a){
            return this.attr("clip-path","url("+this.renderer.url+"#"+a.id+")")
        },
        crisp:function(a,b,c,d,e){
            var f,g={},h={},i;
            a=a||this.strokeWidth||0;
            i=a%2/2;
            h.x=lb(b||this.x||0)+i;
            h.y=lb(c||this.y||0)+i;
            h.width=lb((d||this.width||0)-2*i);
            h.height=lb((e||this.height||0)-2*i);
            h.strokeWidth=a;
            for(f in h)if(this[f]!==h[f])this[f]=g[f]=h[f];
            return g
        },
        css:function(a){
            var b=this.element;
            b=a&&a.width&&b.nodeName==="text";
            var c,d="",e=function(f,g){
                return"-"+g.toLowerCase()
            };
        
            if(a&&a.color)a.fill=a.color;
            this.styles=a=sa(this.styles,a);
            if(Mc&&!Ic){
                b&&delete a.width;
                Ja(this.element,a)
            }else{
                for(c in a)d+=c.replace(/([A-Z])/g,e)+":"+a[c]+";";this.attr({
                    style:d
                })
            }
            b&&this.added&&this.renderer.buildText(this);
            return this
        },
        on:function(a,b){
            var c=b;
            if(Kb&&a==="click"){
                a="touchstart";
                c=function(d){
                    d.preventDefault();
                    b()
                }
            }
            this.element["on"+a]=c;
            return this
        },
        translate:function(a,b){
            return this.attr({
                translateX:a,
                translateY:b
            })
        },
        invert:function(){
            this.inverted=true;
            this.updateTransform();
            return this
        },
        updateTransform:function(){
            var a=this.translateX||0,b=this.translateY||0,c=this.inverted,d=this.rotation,e=[];
            if(c){
                a+=this.attr("width");
                b+=this.attr("height")
            }
            if(a||b)e.push("translate("+a+","+b+")");
            if(c)e.push("rotate(90) scale(-1,1)");else d&&e.push("rotate("+d+" "+this.x+" "+this.y+")");
            e.length&&Ga(this.element,"transform",e.join(" "))
        },
        toFront:function(){
            var a=
            this.element;
            a.parentNode.appendChild(a);
            return this
        },
        align:function(a,b,c){
            if(a){
                this.alignOptions=a;
                this.alignByTranslate=b;
                c||this.renderer.alignedObjects.push(this)
            }else{
                a=this.alignOptions;
                b=this.alignByTranslate
            }
            c=A(c,this.renderer);
            var d=a.align,e=a.verticalAlign,f=(c.x||0)+(a.x||0),g=(c.y||0)+(a.y||0),h={};
    
            if(/^(right|center)$/.test(d))f+=(c.width-(a.width||0))/{
                right:1,
                center:2
            }
            [d];
            h[b?"translateX":"x"]=W(f);
            if(/^(bottom|middle)$/.test(e))g+=(c.height-(a.height||0))/({
                bottom:1,
                middle:2
            }
            [e]||
            1);
            h[b?"translateY":"y"]=W(g);
            this[this.placed?"animate":"attr"](h);
            this.placed=true;
            this.alignAttr=h;
            return this
        },
        getBBox:function(){
            var a,b,c,d=this.rotation,e=d*ae;
            try{
                a=sa({},this.element.getBBox())
            }catch(f){
                a={
                    width:0,
                    height:0
                }
            }
            b=a.width;
            c=a.height;
            if(d){
                a.width=bb(c*Cb(e))+bb(b*qb(e));
                a.height=bb(c*qb(e))+bb(b*Cb(e))
            }
            return a
        },
        show:function(){
            return this.attr({
                visibility:Ab
            })
        },
        hide:function(){
            return this.attr({
                visibility:ob
            })
        },
        add:function(a){
            var b=this.renderer,c=a||b,d=c.element||b.box,e=
            d.childNodes,f=this.element,g=Ga(f,"zIndex");
            this.parentInverted=a&&a.inverted;
            this.textStr!==undefined&&b.buildText(this);
            if(a&&this.htmlNode){
                if(!a.htmlNode)a.htmlNode=[];
                a.htmlNode.push(this)
            }
            if(g){
                c.handleZ=true;
                g=ja(g)
            }
            if(c.handleZ)for(c=0;c<e.length;c++){
                a=e[c];
                b=Ga(a,"zIndex");
                if(a!==f&&(ja(b)>g||!K(g)&&K(b))){
                    d.insertBefore(f,a);
                    return this
                }
            }
            d.appendChild(f);
            this.added=true;
            return this
        },
        destroy:function(){
            var a=this.element||{},b=this.shadows,c=a.parentNode,d,e;
            a.onclick=a.onmouseout=a.onmouseover=
            a.onmousemove=null;
            Fc(this);
            if(this.clipPath)this.clipPath=this.clipPath.destroy();
            if(this.stops){
                for(e=0;e<this.stops.length;e++)this.stops[e]=this.stops[e].destroy();
                this.stops=null
            }
            c&&c.removeChild(a);
            b&&u(b,function(f){
                (c=f.parentNode)&&c.removeChild(f)
            });
            nc(this.renderer.alignedObjects,this);
            for(d in this)delete this[d];return null
        },
        empty:function(){
            for(var a=this.element,b=a.childNodes,c=b.length;c--;)a.removeChild(b[c])
        },
        shadow:function(a,b){
            var c=[],d,e,f=this.element,g=this.parentInverted?
            "(-1,-1)":"(1,1)";
            if(a){
                for(d=1;d<=3;d++){
                    e=f.cloneNode(0);
                    Ga(e,{
                        isShadow:"true",
                        stroke:"rgb(0, 0, 0)",
                        "stroke-opacity":0.05*d,
                        "stroke-width":7-2*d,
                        transform:"translate"+g,
                        fill:jb
                    });
                    b?b.element.appendChild(e):f.parentNode.insertBefore(e,f);
                    c.push(e)
                }
                this.shadows=c
            }
            return this
        }
    };

    var cd=function(){
        this.init.apply(this,arguments)
    };
    
    cd.prototype={
        Element:Sc,
        init:function(a,b,c,d){
            var e=location,f;
            f=this.createElement("svg").attr({
                xmlns:"http://www.w3.org/2000/svg",
                version:"1.1"
            });
            a.appendChild(f.element);
            this.box=f.element;
            this.boxWrapper=f;
            this.alignedObjects=[];
            this.url=Mc?"":e.href.replace(/#.*?$/,"");
            this.defs=this.createElement("defs").add();
            this.forExport=d;
            this.gradients=[];
            this.setSize(b,c,false)
        },
        destroy:function(){
            var a,b=this.gradients,c=this.defs;
            this.box=null;
            this.boxWrapper=this.boxWrapper.destroy();
            if(b){
                for(a=0;a<b.length;a++)this.gradients[a]=b[a].destroy();
                this.gradients=null
            }
            if(c)this.defs=c.destroy();
            return this.alignedObjects=null
        },
        createElement:function(a){
            var b=new this.Element;
            b.init(this,a);
            return b
        },
        buildText:function(a){
            for(var b=a.element,c=A(a.textStr,"").toString().replace(/<(b|strong)>/g,'<span style="font-weight:bold">').replace(/<(i|em)>/g,'<span style="font-style:italic">').replace(/<a/g,"<span").replace(/<\/(b|strong|i|em|a)>/g,"</span>").split(/<br.*?>/g),d=b.childNodes,e=/style="([^"]+)"/,f=/href="([^"]+)"/,g=Ga(b,"x"),h=a.styles,i=h&&a.useHTML&&!this.forExport,j=a.htmlNode,m=h&&ja(h.width),v=h&&h.lineHeight,P,T=d.length;T--;)b.removeChild(d[T]);
            m&&!a.added&&
            this.box.appendChild(b);
            u(c,function(Y,H){
                var U,z=0,M;
                Y=Y.replace(/<span/g,"|||<span").replace(/<\/span>/g,"</span>|||");
                U=Y.split("|||");
                u(U,function(y){
                    if(y!==""||U.length===1){
                        var C={},Z=ua.createElementNS("http://www.w3.org/2000/svg","tspan");
                        e.test(y)&&Ga(Z,"style",y.match(e)[1].replace(/(;| |^)color([ :])/,"$1fill$2"));
                        if(f.test(y)){
                            Ga(Z,"onclick",'location.href="'+y.match(f)[1]+'"');
                            Ja(Z,{
                                cursor:"pointer"
                            })
                        }
                        y=(y.replace(/<(.|\n)*?>/g,"")||" ").replace(/&lt;/g,"<").replace(/&gt;/g,">");
                        Z.appendChild(ua.createTextNode(y));
                        if(z)C.dx=3;else C.x=g;
                        if(!z){
                            if(H){
                                !Ic&&a.renderer.forExport&&Ja(Z,{
                                    display:"block"
                                });
                                M=db.getComputedStyle&&ja(db.getComputedStyle(P,null).getPropertyValue("line-height"));
                                if(!M||isNaN(M))M=v||P.offsetHeight||18;
                                Ga(Z,"dy",M)
                            }
                            P=Z
                        }
                        Ga(Z,C);
                        b.appendChild(Z);
                        z++;
                        if(m){
                            y=y.replace(/-/g,"- ").split(" ");
                            for(var Sa,Na=[];y.length||Na.length;){
                                Sa=b.getBBox().width;
                                C=Sa>m;
                                if(!C||y.length===1){
                                    y=Na;
                                    Na=[];
                                    if(y.length){
                                        Z=ua.createElementNS("http://www.w3.org/2000/svg","tspan");
                                        Ga(Z,{
                                            dy:v||16,
                                            x:g
                                        });
                                        b.appendChild(Z);
                                        if(Sa>m)m=Sa
                                    }
                                }else{
                                    Z.removeChild(Z.firstChild);
                                    Na.unshift(y.pop())
                                }
                                y.length&&Z.appendChild(ua.createTextNode(y.join(" ").replace(/- /g,"-")))
                            }
                        }
                    }
                })
            });
            if(i){
                if(!j)j=a.htmlNode=hb("span",null,sa(h,{
                    position:ic,
                    top:0,
                    left:0
                }),this.box.parentNode);
                j.innerHTML=a.textStr;
                for(T=d.length;T--;)d[T].style.visibility=ob
            }
        },
        crispLine:function(a,b){
            if(a[1]===a[4])a[1]=a[4]=W(a[1])+b%2/2;
            if(a[2]===a[5])a[2]=a[5]=W(a[2])+b%2/2;
            return a
        },
        path:function(a){
            return this.createElement("path").attr({
                d:a,
                fill:jb
            })
        },
        circle:function(a,
            b,c){
            a=Nb(a)?a:{
                x:a,
                y:b,
                r:c
            };
    
            return this.createElement("circle").attr(a)
        },
        arc:function(a,b,c,d,e,f){
            if(Nb(a)){
                b=a.y;
                c=a.r;
                d=a.innerR;
                e=a.start;
                f=a.end;
                a=a.x
            }
            return this.symbol("arc",a||0,b||0,c||0,{
                innerR:d||0,
                start:e||0,
                end:f||0
            })
        },
        rect:function(a,b,c,d,e,f){
            if(Nb(a)){
                b=a.y;
                c=a.width;
                d=a.height;
                e=a.r;
                f=a.strokeWidth;
                a=a.x
            }
            e=this.createElement("rect").attr({
                rx:e,
                ry:e,
                fill:jb
            });
            return e.attr(e.crisp(f,a,b,Ia(c,0),Ia(d,0)))
        },
        setSize:function(a,b,c){
            var d=this.alignedObjects,e=d.length;
            this.width=a;
            this.height=b;
            for(this.boxWrapper[A(c,true)?"animate":"attr"]({
                width:a,
                height:b
            });e--;)d[e].align()
        },
        g:function(a){
            var b=this.createElement("g");
            return K(a)?b.attr({
                "class":uc+a
            }):b
        },
        image:function(a,b,c,d,e){
            var f={
                preserveAspectRatio:jb
            };
    
            arguments.length>1&&sa(f,{
                x:b,
                y:c,
                width:d,
                height:e
            });
            f=this.createElement("image").attr(f);
            f.element.setAttributeNS?f.element.setAttributeNS("http://www.w3.org/1999/xlink","href",a):f.element.setAttribute("hc-svg-href",a);
            return f
        },
        symbol:function(a,b,c,d,e){
            var f,
            g=this.symbols[a];
            g=g&&g(W(b),W(c),d,e);
            var h=/^url\((.*?)\)$/,i;
            if(g){
                f=this.path(g);
                sa(f,{
                    symbolName:a,
                    x:b,
                    y:c,
                    r:d
                });
                e&&sa(f,e)
            }else if(h.test(a)){
                var j=function(m,v){
                    m.attr({
                        width:v[0],
                        height:v[1]
                    }).translate(-W(v[0]/2),-W(v[1]/2))
                };
            
                i=a.match(h)[1];
                a=be[i];
                f=this.image(i).attr({
                    x:b,
                    y:c
                });
                if(a)j(f,a);
                else{
                    f.attr({
                        width:0,
                        height:0
                    });
                    hb("img",{
                        onload:function(){
                            j(f,be[i]=[this.width,this.height])
                        },
                        src:i
                    })
                }
            }else f=this.circle(b,c,d);
            return f
        },
        symbols:{
            square:function(a,b,c){
                c=0.707*c;
                return[Za,a-c,
                b-c,Ka,a+c,b-c,a+c,b+c,a-c,b+c,"Z"]
            },
            triangle:function(a,b,c){
                return[Za,a,b-1.33*c,Ka,a+c,b+0.67*c,a-c,b+0.67*c,"Z"]
            },
            "triangle-down":function(a,b,c){
                return[Za,a,b+1.33*c,Ka,a-c,b-0.67*c,a+c,b-0.67*c,"Z"]
            },
            diamond:function(a,b,c){
                return[Za,a,b-c,Ka,a+c,b,a,b+c,a-c,b,"Z"]
            },
            arc:function(a,b,c,d){
                var e=d.start,f=d.end-1.0E-6,g=d.innerR,h=qb(e),i=Cb(e),j=qb(f);
                f=Cb(f);
                d=d.end-e<kc?0:1;
                return[Za,a+c*h,b+c*i,"A",c,c,0,d,1,a+c*j,b+c*f,Ka,a+g*j,b+g*f,"A",g,g,0,d,0,a+g*h,b+g*i,"Z"]
            }
        },
        clipRect:function(a,b,
            c,d){
            var e=uc+vd++,f=this.createElement("clipPath").attr({
                id:e
            }).add(this.defs);
            a=this.rect(a,b,c,d,0).add(f);
            a.id=e;
            a.clipPath=f;
            return a
        },
        color:function(a,b,c){
            var d,e=/^rgba/;
            if(a&&a.linearGradient){
                var f=this;
                b=a.linearGradient;
                c=uc+vd++;
                var g,h,i;
                g=f.createElement("linearGradient").attr({
                    id:c,
                    gradientUnits:"userSpaceOnUse",
                    x1:b[0],
                    y1:b[1],
                    x2:b[2],
                    y2:b[3]
                }).add(f.defs);
                f.gradients.push(g);
                g.stops=[];
                u(a.stops,function(j){
                    if(e.test(j[1])){
                        d=bc(j[1]);
                        h=d.get("rgb");
                        i=d.get("a")
                    }else{
                        h=j[1];
                        i=1
                    }
                    j=
                    f.createElement("stop").attr({
                        offset:j[0],
                        "stop-color":h,
                        "stop-opacity":i
                    }).add(g);
                    g.stops.push(j)
                });
                return"url("+this.url+"#"+c+")"
            }else if(e.test(a)){
                d=bc(a);
                Ga(b,c+"-opacity",d.get("a"));
                return d.get("rgb")
            }else{
                b.removeAttribute(c+"-opacity");
                return a
            }
        },
        text:function(a,b,c,d){
            var e=Xa.chart.style;
            b=W(A(b,0));
            c=W(A(c,0));
            a=this.createElement("text").attr({
                x:b,
                y:c,
                text:a
            }).css({
                fontFamily:e.fontFamily,
                fontSize:e.fontSize
            });
            a.x=b;
            a.y=c;
            a.useHTML=d;
            return a
        }
    };

    dd=cd;
    if(!Ic){
        Db=yb(Sc,{
            init:function(a,
                b){
                var c=["<",b,' filled="f" stroked="f"'],d=["position: ",ic,";"];
                if(b==="shape"||b===Tb)d.push("left:0;top:0;width:10px;height:10px;");
                if(Jc)d.push("visibility: ",b===Tb?ob:Ab);
                c.push(' style="',d.join(""),'"/>');
                if(b){
                    c=b===Tb||b==="span"||b==="img"?c.join(""):a.prepVML(c);
                    this.element=hb(c)
                }
                this.renderer=a
            },
            add:function(a){
                var b=this.renderer,c=this.element,d=b.box;
                d=a?a.element||a:d;
                a&&a.inverted&&b.invertChild(c,d);
                Jc&&d.gVis===ob&&Ja(c,{
                    visibility:ob
                });
                d.appendChild(c);
                this.added=true;
                this.alignOnAdd&&
                this.updateTransform();
                return this
            },
            attr:function(a,b){
                var c,d,e,f=this.element||{},g=f.style,h=f.nodeName,i=this.renderer,j=this.symbolName,m,v,P=this.shadows,T=this;
                if(Sb(a)&&K(b)){
                    c=a;
                    a={};
                
                    a[c]=b
                }
                if(Sb(a)){
                    c=a;
                    T=c==="strokeWidth"||c==="stroke-width"?this.strokeweight:this[c]
                }else for(c in a){
                    d=a[c];
                    m=false;
                    if(j&&/^(x|y|r|start|end|width|height|innerR)/.test(c)){
                        if(!v){
                            this.symbolAttr(a);
                            v=true
                        }
                        m=true
                    }else if(c==="d"){
                        d=d||[];
                        this.d=d.join(" ");
                        e=d.length;
                        for(m=[];e--;)m[e]=lc(d[e])?W(d[e]*10)-
                            5:d[e]==="Z"?"x":d[e];
                        d=m.join(" ")||"x";
                        f.path=d;
                        if(P)for(e=P.length;e--;)P[e].path=d;
                        m=true
                    }else if(c==="zIndex"||c==="visibility"){
                        if(Jc&&c==="visibility"&&h==="DIV"){
                            f.gVis=d;
                            m=f.childNodes;
                            for(e=m.length;e--;)Ja(m[e],{
                                visibility:d
                            });
                            if(d===Ab)d=null
                        }
                        if(d)g[c]=d;
                        m=true
                    }else if(/^(width|height)$/.test(c)){
                        this[c]=d;
                        if(this.updateClipping){
                            this[c]=d;
                            this.updateClipping()
                        }else g[c]=d;
                        m=true
                    }else if(/^(x|y)$/.test(c)){
                        this[c]=d;
                        if(f.tagName==="SPAN")this.updateTransform();else g[{
                            x:"left",
                            y:"top"
                        }
                        [c]]=
                        d
                    }else if(c==="class")f.className=d;
                    else if(c==="stroke"){
                        d=i.color(d,f,c);
                        c="strokecolor"
                    }else if(c==="stroke-width"||c==="strokeWidth"){
                        f.stroked=d?true:false;
                        c="strokeweight";
                        this[c]=d;
                        if(lc(d))d+=Ua
                    }else if(c==="dashstyle"){
                        (f.getElementsByTagName("stroke")[0]||hb(i.prepVML(["<stroke/>"]),null,null,f))[c]=d||"solid";
                        this.dashstyle=d;
                        m=true
                    }else if(c==="fill")if(h==="SPAN")g.color=d;
                        else{
                            f.filled=d!==jb?true:false;
                            d=i.color(d,f,c);
                            c="fillcolor"
                        }else if(c==="translateX"||c==="translateY"||c==="rotation"||
                        c==="align"){
                        if(c==="align")c="textAlign";
                        this[c]=d;
                        this.updateTransform();
                        m=true
                    }else if(c==="text"){
                        this.bBox=null;
                        f.innerHTML=d;
                        m=true
                    }
                    if(P&&c==="visibility")for(e=P.length;e--;)P[e].style[c]=d;
                    if(!m)if(Jc)f[c]=d;else Ga(f,c,d)
                }
                return T
            },
            clip:function(a){
                var b=this,c=a.members;
                c.push(b);
                b.destroyClip=function(){
                    nc(c,b)
                };
                
                return b.css(a.getCSS(b.inverted))
            },
            css:function(a){
                var b=this.element;
                if(b=a&&b.tagName==="SPAN"&&a.width){
                    delete a.width;
                    this.textWidth=b;
                    this.updateTransform()
                }
                this.styles=sa(this.styles,
                    a);
                Ja(this.element,a);
                return this
            },
            destroy:function(){
                this.destroyClip&&this.destroyClip();
                return Sc.prototype.destroy.apply(this)
            },
            empty:function(){
                for(var a=this.element.childNodes,b=a.length,c;b--;){
                    c=a[b];
                    c.parentNode.removeChild(c)
                }
            },
            getBBox:function(){
                var a=this.element,b=this.bBox;
                if(!b){
                    if(a.nodeName==="text")a.style.position=ic;
                    b=this.bBox={
                        x:a.offsetLeft,
                        y:a.offsetTop,
                        width:a.offsetWidth,
                        height:a.offsetHeight
                    }
                }
                return b
            },
            on:function(a,b){
                this.element["on"+a]=function(){
                    var c=db.event;
                    c.target=
                    c.srcElement;
                    b(c)
                };
            
                return this
            },
            updateTransform:function(){
                if(this.added){
                    var a=this,b=a.element,c=a.translateX||0,d=a.translateY||0,e=a.x||0,f=a.y||0,g=a.textAlign||"left",h={
                        left:0,
                        center:0.5,
                        right:1
                    }
                    [g],i=g&&g!=="left";
                    if(c||d)a.css({
                        marginLeft:c,
                        marginTop:d
                    });
                    a.inverted&&u(b.childNodes,function(z){
                        a.renderer.invertChild(z,b)
                    });
                    if(b.tagName==="SPAN"){
                        var j,m;
                        c=a.rotation;
                        var v;
                        j=0;
                        d=1;
                        var P=0,T;
                        v=ja(a.textWidth);
                        var Y=a.xCorr||0,H=a.yCorr||0,U=[c,g,b.innerHTML,a.textWidth].join(",");
                        if(U!==a.cTT){
                            if(K(c)){
                                j=
                                c*ae;
                                d=qb(j);
                                P=Cb(j);
                                Ja(b,{
                                    filter:c?["progid:DXImageTransform.Microsoft.Matrix(M11=",d,", M12=",-P,", M21=",P,", M22=",d,", sizingMethod='auto expand')"].join(""):jb
                                })
                            }
                            j=b.offsetWidth;
                            m=b.offsetHeight;
                            if(j>v){
                                Ja(b,{
                                    width:v+Ua,
                                    display:"block",
                                    whiteSpace:"normal"
                                });
                                j=v
                            }
                            v=W((ja(b.style.fontSize)||12)*1.2);
                            Y=d<0&&-j;
                            H=P<0&&-m;
                            T=d*P<0;
                            Y+=P*v*(T?1-h:h);
                            H-=d*v*(c?T?h:1-h:1);
                            if(i){
                                Y-=j*h*(d<0?-1:1);
                                if(c)H-=m*h*(P<0?-1:1);
                                Ja(b,{
                                    textAlign:g
                                })
                            }
                            a.xCorr=Y;
                            a.yCorr=H
                        }
                        Ja(b,{
                            left:e+Y,
                            top:f+H
                        });
                        a.cTT=U
                    }
                }else this.alignOnAdd=
                    true
            },
            shadow:function(a,b){
                var c=[],d,e=this.element,f=this.renderer,g,h=e.style,i,j=e.path;
                if(j&&typeof j.value!=="string")j="x";
                if(a){
                    for(d=1;d<=3;d++){
                        i=['<shape isShadow="true" strokeweight="',7-2*d,'" filled="false" path="',j,'" coordsize="100,100" style="',e.style.cssText,'" />'];
                        g=hb(f.prepVML(i),null,{
                            left:ja(h.left)+1,
                            top:ja(h.top)+1
                        });
                        i=['<stroke color="black" opacity="',0.05*d,'"/>'];
                        hb(f.prepVML(i),null,null,g);
                        b?b.element.appendChild(g):e.parentNode.insertBefore(g,e);
                        c.push(g)
                    }
                    this.shadows=
                    c
                }
                return this
            }
        });
        ma=function(){
            this.init.apply(this,arguments)
        };
    
        ma.prototype=Ca(cd.prototype,{
            Element:Db,
            isIE8:wc.indexOf("MSIE 8.0")>-1,
            init:function(a,b,c){
                var d;
                this.alignedObjects=[];
                d=this.createElement(Tb);
                a.appendChild(d.element);
                this.box=d.element;
                this.boxWrapper=d;
                this.setSize(b,c,false);
                if(!ua.namespaces.hcv){
                    ua.namespaces.add("hcv","urn:schemas-microsoft-com:vml");
                    ua.createStyleSheet().cssText="hcv\\:fill, hcv\\:path, hcv\\:shape, hcv\\:stroke{ behavior:url(#default#VML); display: inline-block; } "
                }
            },
            clipRect:function(a,b,c,d){
                var e=this.createElement();
                return sa(e,{
                    members:[],
                    left:a,
                    top:b,
                    width:c,
                    height:d,
                    getCSS:function(f){
                        var g=this.top,h=this.left,i=h+this.width,j=g+this.height;
                        g={
                            clip:"rect("+W(f?h:g)+"px,"+W(f?j:i)+"px,"+W(f?i:j)+"px,"+W(f?g:h)+"px)"
                        };
                        !f&&Jc&&sa(g,{
                            width:i+Ua,
                            height:j+Ua
                        });
                        return g
                    },
                    updateClipping:function(){
                        u(e.members,function(f){
                            f.css(e.getCSS(f.inverted))
                        })
                    }
                })
            },
            color:function(a,b,c){
                var d,e=/^rgba/;
                if(a&&a.linearGradient){
                    var f,g,h=a.linearGradient,i,j,m,v;
                    u(a.stops,
                        function(P,T){
                            if(e.test(P[1])){
                                d=bc(P[1]);
                                f=d.get("rgb");
                                g=d.get("a")
                            }else{
                                f=P[1];
                                g=1
                            }
                            if(T){
                                m=f;
                                v=g
                            }else{
                                i=f;
                                j=g
                            }
                        });
                    a=90-Fa.atan((h[3]-h[1])/(h[2]-h[0]))*180/kc;
                    a=["<",c,' colors="0% ',i,",100% ",m,'" angle="',a,'" opacity="',v,'" o:opacity2="',j,'" type="gradient" focus="100%" />'];
                    hb(this.prepVML(a),null,null,b)
                }else if(e.test(a)&&b.tagName!=="IMG"){
                    d=bc(a);
                    a=["<",c,' opacity="',d.get("a"),'"/>'];
                    hb(this.prepVML(a),null,null,b);
                    return d.get("rgb")
                }else{
                    b=b.getElementsByTagName(c);
                    if(b.length)b[0].opacity=
                        1;
                    return a
                }
            },
            prepVML:function(a){
                var b=this.isIE8;
                a=a.join("");
                if(b){
                    a=a.replace("/>",' xmlns="urn:schemas-microsoft-com:vml" />');
                    a=a.indexOf('style="')===-1?a.replace("/>",' style="display:inline-block;behavior:url(#default#VML);" />'):a.replace('style="','style="display:inline-block;behavior:url(#default#VML);')
                }else a=a.replace("<","<hcv:");
                return a
            },
            text:function(a,b,c){
                var d=Xa.chart.style;
                return this.createElement("span").attr({
                    text:a,
                    x:W(b),
                    y:W(c)
                }).css({
                    whiteSpace:"nowrap",
                    fontFamily:d.fontFamily,
                    fontSize:d.fontSize
                })
            },
            path:function(a){
                return this.createElement("shape").attr({
                    coordsize:"100 100",
                    d:a
                })
            },
            circle:function(a,b,c){
                return this.symbol("circle").attr({
                    x:a,
                    y:b,
                    r:c
                })
            },
            g:function(a){
                var b;
                if(a)b={
                    className:uc+a,
                    "class":uc+a
                };
        
                return this.createElement(Tb).attr(b)
            },
            image:function(a,b,c,d,e){
                var f=this.createElement("img").attr({
                    src:a
                });
                arguments.length>1&&f.css({
                    left:b,
                    top:c,
                    width:d,
                    height:e
                });
                return f
            },
            rect:function(a,b,c,d,e,f){
                if(Nb(a)){
                    b=a.y;
                    c=a.width;
                    d=a.height;
                    e=a.r;
                    f=a.strokeWidth;
                    a=a.x
                }
                var g=this.symbol("rect");
                g.r=e;
                return g.attr(g.crisp(f,a,b,Ia(c,0),Ia(d,0)))
            },
            invertChild:function(a,b){
                var c=b.style;
                Ja(a,{
                    flip:"x",
                    left:ja(c.width)-10,
                    top:ja(c.height)-10,
                    rotation:-90
                })
            },
            symbols:{
                arc:function(a,b,c,d){
                    var e=d.start,f=d.end,g=qb(e),h=Cb(e),i=qb(f),j=Cb(f);
                    d=d.innerR;
                    var m=0.07/c,v=d&&0.1/d||0;
                    if(f-e===0)return["x"];
                    else if(2*kc-f+e<m)i=-m;
                    else if(f-e<v)i=qb(e+v);
                    return["wa",a-c,b-c,a+c,b+c,a+c*g,b+c*h,a+c*i,b+c*j,"at",a-d,b-d,a+d,b+d,a+d*i,b+d*j,a+d*g,b+d*h,"x","e"]
                },
                circle:function(a,
                    b,c){
                    return["wa",a-c,b-c,a+c,b+c,a+c,b,a+c,b,"e"]
                },
                rect:function(a,b,c,d){
                    if(!K(d))return[];
                    var e=d.width;
                    d=d.height;
                    var f=a+e,g=b+d;
                    c=sb(c,e,d);
                    return[Za,a+c,b,Ka,f-c,b,"wa",f-2*c,b,f,b+2*c,f-c,b,f,b+c,Ka,f,g-c,"wa",f-2*c,g-2*c,f,g,f,g-c,f-c,g,Ka,a+c,g,"wa",a,g-2*c,a+2*c,g,a+c,g,a,g-c,Ka,a,b+c,"wa",a,b,a+2*c,b+2*c,a,b+c,a+c,b,"x","e"]
                }
            }
        });
        dd=ma
    }
    Nd.prototype.callbacks=[];
    var Lc=function(){};

    Lc.prototype={
        init:function(a,b){
            var c=a.chart.counters,d;
            this.series=a;
            this.applyOptions(b);
            this.pointAttr=

            {};
        
            if(a.options.colorByPoint){
                d=a.chart.options.colors;
                if(!this.options)this.options={};
                
                this.color=this.options.color=this.color||d[c.color++];
                c.wrapColor(d.length)
            }
            a.chart.pointCount++;
            return this
        },
        applyOptions:function(a){
            var b=this.series;
            this.config=a;
            if(lc(a)||a===null)this.y=a;
            else if(Nb(a)&&!lc(a.length)){
                sa(this,a);
                this.options=a
            }else if(Sb(a[0])){
                this.name=a[0];
                this.y=a[1]
            }else if(lc(a[0])){
                this.x=a[0];
                this.y=a[1]
            }
            if(this.x===Wa)this.x=b.autoIncrement()
        },
        destroy:function(){
            var a=this,b=a.series,
            c=b.chart.hoverPoints,d;
            b.chart.pointCount--;
            if(c){
                a.setState();
                nc(c,a)
            }
            a===b.chart.hoverPoint&&a.onMouseOut();
            vb(a);
            u(["graphic","tracker","group","dataLabel","connector","shadowGroup"],function(e){
                a[e]&&a[e].destroy()
            });
            a.legendItem&&a.series.chart.legend.destroyItem(a);
            for(d in a)a[d]=null
        },
        getLabelConfig:function(){
            return{
                x:this.category,
                y:this.y,
                series:this.series,
                point:this,
                percentage:this.percentage,
                total:this.total||this.stackTotal
            }
        },
        select:function(a,b){
            var c=this,d=c.series.chart;
            a=A(a,
                !c.selected);
            c.firePointEvent(a?"select":"unselect",{
                accumulate:b
            },function(){
                c.selected=a;
                c.setState(a&&"select");
                b||u(d.getSelectedPoints(),function(e){
                    if(e.selected&&e!==c){
                        e.selected=false;
                        e.setState(ib);
                        e.firePointEvent("unselect")
                    }
                })
            })
        },
        onMouseOver:function(){
            var a=this.series.chart,b=a.tooltip,c=a.hoverPoint;
            c&&c!==this&&c.onMouseOut();
            this.firePointEvent("mouseOver");
            b&&!b.shared&&b.refresh(this);
            this.setState(Bb);
            a.hoverPoint=this
        },
        onMouseOut:function(){
            this.firePointEvent("mouseOut");
            this.setState();
            this.series.chart.hoverPoint=null
        },
        tooltipFormatter:function(a){
            var b=this.series;
            return['<span style="color:'+b.color+'">',this.name||b.name,"</span>: ",!a?"<b>x = "+(this.name||this.x)+",</b> ":"","<b>",!a?"y = ":"",this.y,"</b>"].join("")
        },
        update:function(a,b,c){
            var d=this,e=d.series,f=d.graphic,g=e.chart;
            b=A(b,true);
            d.firePointEvent("update",{
                options:a
            },function(){
                d.applyOptions(a);
                if(Nb(a)){
                    e.getAttribs();
                    f&&f.attr(d.pointAttr[e.state])
                }
                e.isDirty=true;
                b&&g.redraw(c)
            })
        },
        remove:function(a,b){
            var c=
            this,d=c.series,e=d.chart,f=d.data;
            oc(b,e);
            a=A(a,true);
            c.firePointEvent("remove",null,function(){
                nc(f,c);
                c.destroy();
                d.isDirty=true;
                a&&e.redraw()
            })
        },
        firePointEvent:function(a,b,c){
            var d=this,e=this.series.options;
            if(e.point.events[a]||d.options&&d.options.events&&d.options.events[a])this.importEvents();
            if(a==="click"&&e.allowPointSelect)c=function(f){
                d.select(null,f.ctrlKey||f.metaKey||f.shiftKey)
            };
        
            Pa(this,a,b,c)
        },
        importEvents:function(){
            if(!this.hasImportedEvents){
                var a=Ca(this.series.options.point,
                    this.options).events,b;
                this.events=a;
                for(b in a)Qa(this,b,a[b]);this.hasImportedEvents=true
            }
        },
        setState:function(a){
            var b=this.series,c=b.options.states,d=xb[b.type].marker&&b.options.marker,e=d&&!d.enabled,f=(d=d&&d.states[a])&&d.enabled===false,g=b.stateMarkerGraphic,h=b.chart,i=this.pointAttr;
            a=a||ib;
            if(!(a===this.state||this.selected&&a!=="select"||c[a]&&c[a].enabled===false||a&&(f||e&&!d.enabled))){
                if(this.graphic)this.graphic.attr(i[a]);
                else{
                    if(a){
                        if(!g)b.stateMarkerGraphic=g=h.renderer.circle(0,
                            0,i[a].r).attr(i[a]).add(b.group);
                        g.translate(this.plotX,this.plotY)
                    }
                    if(g)g[a?"show":"hide"]()
                }
                this.state=a
            }
        }
    };

    var rb=function(){};

    rb.prototype={
        isCartesian:true,
        type:"line",
        pointClass:Lc,
        pointAttrToOptions:{
            stroke:"lineColor",
            "stroke-width":"lineWidth",
            fill:"fillColor",
            r:"radius"
        },
        init:function(a,b){
            var c,d;
            d=a.series.length;
            this.chart=a;
            b=this.setOptions(b);
            sa(this,{
                index:d,
                options:b,
                name:b.name||"Series "+(d+1),
                state:ib,
                pointAttr:{},
                visible:b.visible!==false,
                selected:b.selected===true
            });
            d=b.events;
            for(c in d)Qa(this,c,d[c]);if(d&&d.click||b.point&&b.point.events&&b.point.events.click||b.allowPointSelect)a.runTrackerClick=true;
            this.getColor();
            this.getSymbol();
            this.setData(b.data,false)
        },
        autoIncrement:function(){
            var a=this.options,b=this.xIncrement;
            b=A(b,a.pointStart,0);
            this.pointInterval=A(this.pointInterval,a.pointInterval,1);
            this.xIncrement=b+this.pointInterval;
            return b
        },
        cleanData:function(){
            var a=this.chart,b=this.data,c,d,e=a.smallestInterval,f,g;
            Hd(b,function(h,i){
                return h.x-i.x
            });
            if(this.options.connectNulls)for(g=
                b.length-1;g>=0;g--)b[g].y===null&&b[g-1]&&b[g+1]&&b.splice(g,1);
            for(g=b.length-1;g>=0;g--)if(b[g-1]){
                f=b[g].x-b[g-1].x;
                if(f>0&&(d===Wa||f<d)){
                    d=f;
                    c=g
                }
            }
            if(e===Wa||d<e)a.smallestInterval=d;
            this.closestPoints=c
        },
        getSegments:function(){
            var a=-1,b=[],c=this.data;
            u(c,function(d,e){
                if(d.y===null){
                    e>a+1&&b.push(c.slice(a+1,e));
                    a=e
                }else e===c.length-1&&b.push(c.slice(a+1,e+1))
            });
            this.segments=b
        },
        setOptions:function(a){
            var b=this.chart.options.plotOptions;
            return Ca(b[this.type],b.series,a)
        },
        getColor:function(){
            var a=
            this.chart.options.colors,b=this.chart.counters;
            this.color=this.options.color||a[b.color++]||"#0000ff";
            b.wrapColor(a.length)
        },
        getSymbol:function(){
            var a=this.chart.options.symbols,b=this.chart.counters;
            this.symbol=this.options.marker.symbol||a[b.symbol++];
            b.wrapSymbol(a.length)
        },
        addPoint:function(a,b,c,d){
            var e=this.data,f=this.graph,g=this.area,h=this.chart;
            a=(new this.pointClass).init(this,a);
            oc(d,h);
            if(f&&c)f.shift=c;
            if(g){
                g.shift=c;
                g.isArea=true
            }
            b=A(b,true);
            e.push(a);
            c&&e[0].remove(false);
            this.getAttribs();
            this.isDirty=true;
            b&&h.redraw()
        },
        setData:function(a,b){
            var c=this,d=c.data,e=c.initialColor,f=c.chart,g=d&&d.length||0;
            c.xIncrement=null;
            if(K(e))f.counters.color=e;
            for(a=sc(xc(a||[]),function(h){
                return(new c.pointClass).init(c,h)
            });g--;)d[g].destroy();
            c.data=a;
            c.cleanData();
            c.getSegments();
            c.getAttribs();
            c.isDirty=true;
            f.isDirtyBox=true;
            A(b,true)&&f.redraw(false)
        },
        remove:function(a,b){
            var c=this,d=c.chart;
            a=A(a,true);
            if(!c.isRemoving){
                c.isRemoving=true;
                Pa(c,"remove",null,function(){
                    c.destroy();
                    d.isDirtyLegend=
                    d.isDirtyBox=true;
                    a&&d.redraw(b)
                })
            }
            c.isRemoving=false
        },
        translate:function(){
            for(var a=this.chart,b=this.options.stacking,c=this.xAxis.categories,d=this.yAxis,e=this.data,f=e.length;f--;){
                var g=e[f],h=g.x,i=g.y,j=g.low,m=d.stacks[(i<0?"-":"")+this.stackKey];
                g.plotX=this.xAxis.translate(h);
                if(b&&this.visible&&m&&m[h]){
                    j=m[h];
                    h=j.total;
                    j.cum=j=j.cum-i;
                    i=j+i;
                    if(b==="percent"){
                        j=h?j*100/h:0;
                        i=h?i*100/h:0
                    }
                    g.percentage=h?g.y*100/h:0;
                    g.stackTotal=h
                }
                if(K(j))g.yBottom=d.translate(j,0,1,0,1);
                if(i!==null)g.plotY=
                    d.translate(i,0,1,0,1);
                g.clientX=a.inverted?a.plotHeight-g.plotX:g.plotX;
                g.category=c&&c[g.x]!==Wa?c[g.x]:g.x
            }
        },
        setTooltipPoints:function(a){
            var b=this.chart,c=b.inverted,d=[],e=W((c?b.plotTop:b.plotLeft)+b.plotSizeX),f,g,h=[];
            if(a)this.tooltipPoints=null;
            u(this.segments,function(i){
                d=d.concat(i)
            });
            if(this.xAxis&&this.xAxis.reversed)d=d.reverse();
            u(d,function(i,j){
                f=d[j-1]?d[j-1]._high+1:0;
                for(g=i._high=d[j+1]?lb((i.plotX+(d[j+1]?d[j+1].plotX:e))/2):e;f<=g;)h[c?e-f++:f++]=i
            });
            this.tooltipPoints=h
        },
        onMouseOver:function(){
            var a=this.chart,b=a.hoverSeries;
            if(!(!Kb&&a.mouseIsDown)){
                b&&b!==this&&b.onMouseOut();
                this.options.events.mouseOver&&Pa(this,"mouseOver");
                this.tracker&&this.tracker.toFront();
                this.setState(Bb);
                a.hoverSeries=this
            }
        },
        onMouseOut:function(){
            var a=this.options,b=this.chart,c=b.tooltip,d=b.hoverPoint;
            d&&d.onMouseOut();
            this&&a.events.mouseOut&&Pa(this,"mouseOut");
            c&&!a.stickyTracking&&c.hide();
            this.setState();
            b.hoverSeries=null
        },
        animate:function(a){
            var b=this.chart,c=this.clipRect,
            d=this.options.animation;
            if(d&&!Nb(d))d={};
        
            if(a){
                if(!c.isAnimating){
                    c.attr("width",0);
                    c.isAnimating=true
                }
            }else{
                c.animate({
                    width:b.plotSizeX
                },d);
                this.animate=null
            }
        },
        drawPoints:function(){
            var a,b=this.data,c=this.chart,d,e,f,g,h,i;
            if(this.options.marker.enabled)for(f=b.length;f--;){
                g=b[f];
                d=g.plotX;
                e=g.plotY;
                i=g.graphic;
                if(e!==Wa&&!isNaN(e)){
                    a=g.pointAttr[g.selected?"select":ib];
                    h=a.r;
                    if(i)i.animate({
                        x:d,
                        y:e,
                        r:h
                    });else g.graphic=c.renderer.symbol(A(g.marker&&g.marker.symbol,this.symbol),d,e,h).attr(a).add(this.group)
                }
            }
        },
        convertAttribs:function(a,b,c,d){
            var e=this.pointAttrToOptions,f,g,h={};
    
            a=a||{};
    
            b=b||{};
    
            c=c||{};
    
            d=d||{};
    
            for(f in e){
                g=e[f];
                h[f]=A(a[g],b[f],c[f],d[f])
            }
            return h
        },
        getAttribs:function(){
            var a=this,b=xb[a.type].marker?a.options.marker:a.options,c=b.states,d=c[Bb],e,f=a.color,g={
                stroke:f,
                fill:f
            },h=a.data,i=[],j,m=a.pointAttrToOptions,v;
            if(a.options.marker){
                d.radius=d.radius||b.radius+2;
                d.lineWidth=d.lineWidth||b.lineWidth+1
            }else d.color=d.color||bc(d.color||f).brighten(d.brightness).get();
            i[ib]=a.convertAttribs(b,
                g);
            u([Bb,"select"],function(P){
                i[P]=a.convertAttribs(c[P],i[ib])
            });
            a.pointAttr=i;
            for(f=h.length;f--;){
                g=h[f];
                if((b=g.options&&g.options.marker||g.options)&&b.enabled===false)b.radius=0;
                e=false;
                if(g.options)for(v in m)if(K(b[m[v]]))e=true;if(e){
                    j=[];
                    c=b.states||{};
            
                    e=c[Bb]=c[Bb]||{};
            
                    if(!a.options.marker)e.color=bc(e.color||g.options.color).brighten(e.brightness||d.brightness).get();
                    j[ib]=a.convertAttribs(b,i[ib]);
                    j[Bb]=a.convertAttribs(c[Bb],i[Bb],j[ib]);
                    j.select=a.convertAttribs(c.select,i.select,
                        j[ib])
                }else j=i;
                g.pointAttr=j
            }
        },
        destroy:function(){
            var a=this,b=a.chart,c=a.clipRect,d=/\/5[0-9\.]+ (Safari|Mobile)\//.test(wc),e,f;
            Pa(a,"destroy");
            vb(a);
            a.legendItem&&a.chart.legend.destroyItem(a);
            u(a.data,function(g){
                g.destroy()
            });
            if(c&&c!==b.clipRect)a.clipRect=c.destroy();
            u(["area","graph","dataLabelsGroup","group","tracker"],function(g){
                if(a[g]){
                    e=d&&g==="group"?"hide":"destroy";
                    a[g][e]()
                }
            });
            if(b.hoverSeries===a)b.hoverSeries=null;
            nc(b.series,a);
            for(f in a)delete a[f]
        },
        drawDataLabels:function(){
            if(this.options.dataLabels.enabled){
                var a,
                b,c=this.data,d=this.options,e=d.dataLabels,f,g=this.dataLabelsGroup,h=this.chart,i=h.renderer,j=h.inverted,m=this.type,v;
                v=d.stacking;
                var P=m==="column"||m==="bar",T=e.verticalAlign===null,Y=e.y===null;
                if(P)if(v){
                    if(T)e=Ca(e,{
                        verticalAlign:"middle"
                    });
                    if(Y)e=Ca(e,{
                        y:{
                            top:14,
                            middle:4,
                            bottom:-6
                        }
                        [e.verticalAlign]
                    })
                }else if(T)e=Ca(e,{
                    verticalAlign:"top"
                });
                if(g)g.translate(h.plotLeft,h.plotTop);else g=this.dataLabelsGroup=i.g("data-labels").attr({
                    visibility:this.visible?Ab:ob,
                    zIndex:6
                }).translate(h.plotLeft,
                    h.plotTop).add();
                v=e.color;
                if(v==="auto")v=null;
                e.style.color=A(v,this.color,"black");
                u(c,function(H){
                    var U=H.barX,z=U&&U+H.barW/2||H.plotX||-999,M=A(H.plotY,-999),y=H.dataLabel,C=e.align,Z=Y?H.y>=0?-6:12:e.y;
                    f=e.formatter.call(H.getLabelConfig());
                    a=(j?h.plotWidth-M:z)+e.x;
                    b=(j?h.plotHeight-z:M)+Z;
                    if(m==="column")a+={
                        left:-1,
                        right:1
                    }
                    [C]*H.barW/2||0;
                    if(j&&H.y<0){
                        C="right";
                        a-=10
                    }
                    if(y){
                        if(j&&!e.y)b=b+ja(y.styles.lineHeight)*0.9-y.getBBox().height/2;
                        y.attr({
                            text:f
                        }).animate({
                            x:a,
                            y:b
                        })
                    }else if(K(f)){
                        y=
                        H.dataLabel=i.text(f,a,b).attr({
                            align:C,
                            rotation:e.rotation,
                            zIndex:1
                        }).css(e.style).add(g);
                        j&&!e.y&&y.attr({
                            y:b+ja(y.styles.lineHeight)*0.9-y.getBBox().height/2
                        })
                    }
                    if(P&&d.stacking&&y){
                        z=H.barY;
                        M=H.barW;
                        H=H.barH;
                        y.align(e,null,{
                            x:j?h.plotWidth-z-H:U,
                            y:j?h.plotHeight-U-M:z,
                            width:j?H:M,
                            height:j?M:H
                        })
                    }
                })
            }
        },
        drawGraph:function(){
            var a=this,b=a.options,c=a.graph,d=[],e,f=a.area,g=a.group,h=b.lineColor||a.color,i=b.lineWidth,j=b.dashStyle,m,v=a.chart.renderer,P=a.yAxis.getThreshold(b.threshold||0),T=/^area/.test(a.type),
            Y=[],H=[];
            u(a.segments,function(U){
                m=[];
                u(U,function(C,Z){
                    if(a.getPointSpline)m.push.apply(m,a.getPointSpline(U,C,Z));
                    else{
                        m.push(Z?Ka:Za);
                        Z&&b.step&&m.push(C.plotX,U[Z-1].plotY);
                        m.push(C.plotX,C.plotY)
                    }
                });
                if(U.length>1)d=d.concat(m);else Y.push(U[0]);
                if(T){
                    var z=[],M,y=m.length;
                    for(M=0;M<y;M++)z.push(m[M]);
                    y===3&&z.push(Ka,m[1],m[2]);
                    if(b.stacking&&a.type!=="areaspline")for(M=U.length-1;M>=0;M--)z.push(U[M].plotX,U[M].yBottom);else z.push(Ka,U[U.length-1].plotX,P,Ka,U[0].plotX,P);
                    H=H.concat(z)
                }
            });
            a.graphPath=d;
            a.singlePoints=Y;
            if(T){
                e=A(b.fillColor,bc(a.color).setOpacity(b.fillOpacity||0.75).get());
                if(f)f.animate({
                    d:H
                });else a.area=a.chart.renderer.path(H).attr({
                    fill:e
                }).add(g)
            }
            if(c){
                Fc(c);
                c.animate({
                    d:d
                })
            }else if(i){
                c={
                    stroke:h,
                    "stroke-width":i
                };
    
                if(j)c.dashstyle=j;
                a.graph=v.path(d).attr(c).add(g).shadow(b.shadow)
            }
        },
        render:function(){
            var a=this,b=a.chart,c,d,e=a.options,f=e.animation,g=f&&a.animate;
            f=g?f&&f.duration||500:0;
            var h=a.clipRect,i=b.renderer;
            if(!h){
                h=a.clipRect=!b.hasRendered&&
                b.clipRect?b.clipRect:i.clipRect(0,0,b.plotSizeX,b.plotSizeY);
                if(!b.clipRect)b.clipRect=h
            }
            if(!a.group){
                c=a.group=i.g("series");
                if(b.inverted){
                    d=function(){
                        c.attr({
                            width:b.plotWidth,
                            height:b.plotHeight
                        }).invert()
                    };
                
                    d();
                    Qa(b,"resize",d);
                    Qa(a,"destroy",function(){
                        vb(b,"resize",d)
                    })
                }
                c.clip(a.clipRect).attr({
                    visibility:a.visible?Ab:ob,
                    zIndex:e.zIndex
                }).translate(b.plotLeft,b.plotTop).add(b.seriesGroup)
            }
            a.drawDataLabels();
            g&&a.animate(true);
            a.drawGraph&&a.drawGraph();
            a.drawPoints();
            a.options.enableMouseTracking!==
            false&&a.drawTracker();
            g&&a.animate();
            setTimeout(function(){
                h.isAnimating=false;
                if((c=a.group)&&h!==b.clipRect&&h.renderer){
                    c.clip(a.clipRect=b.clipRect);
                    h.destroy()
                }
            },f);
            a.isDirty=false
        },
        redraw:function(){
            var a=this.chart,b=this.group;
            if(b){
                a.inverted&&b.attr({
                    width:a.plotWidth,
                    height:a.plotHeight
                });
                b.animate({
                    translateX:a.plotLeft,
                    translateY:a.plotTop
                })
            }
            this.translate();
            this.setTooltipPoints(true);
            this.render()
        },
        setState:function(a){
            var b=this.options,c=this.graph,d=b.states;
            b=b.lineWidth;
            a=a||
            ib;
            if(this.state!==a){
                this.state=a;
                if(!(d[a]&&d[a].enabled===false)){
                    if(a)b=d[a].lineWidth||b+1;
                    if(c&&!c.dashstyle)c.attr({
                        "stroke-width":b
                    },a?0:500)
                }
            }
        },
        setVisible:function(a,b){
            var c=this.chart,d=this.legendItem,e=this.group,f=this.tracker,g=this.dataLabelsGroup,h,i=this.data,j=c.options.chart.ignoreHiddenSeries;
            h=this.visible;
            h=(this.visible=a=a===Wa?!h:a)?"show":"hide";
            e&&e[h]();
            if(f)f[h]();else for(e=i.length;e--;){
                f=i[e];
                f.tracker&&f.tracker[h]()
            }
            g&&g[h]();
            d&&c.legend.colorizeItem(this,a);
            this.isDirty=
            true;
            this.options.stacking&&u(c.series,function(m){
                if(m.options.stacking&&m.visible)m.isDirty=true
            });
            if(j)c.isDirtyBox=true;
            b!==false&&c.redraw();
            Pa(this,h)
        },
        show:function(){
            this.setVisible(true)
        },
        hide:function(){
            this.setVisible(false)
        },
        select:function(a){
            this.selected=a=a===Wa?!this.selected:a;
            if(this.checkbox)this.checkbox.checked=a;
            Pa(this,a?"select":"unselect")
        },
        drawTracker:function(){
            var a=this,b=a.options,c=[].concat(a.graphPath),d=c.length,e=a.chart,f=e.options.tooltip.snap,g=a.tracker,h=b.cursor;
            h=h&&{
                cursor:h
            };
    
            var i=a.singlePoints,j;
            if(d)for(j=d+1;j--;){
                c[j]===Za&&c.splice(j+1,0,c[j+1]-f,c[j+2],Ka);
                if(j&&c[j]===Za||j===d)c.splice(j,0,Ka,c[j-2]+f,c[j-1])
            }
            for(j=0;j<i.length;j++){
                d=i[j];
                c.push(Za,d.plotX-f,d.plotY,Ka,d.plotX+f,d.plotY)
            }
            if(g)g.attr({
                d:c
            });else a.tracker=e.renderer.path(c).attr({
                isTracker:true,
                stroke:ce,
                fill:jb,
                "stroke-width":b.lineWidth+2*f,
                visibility:a.visible?Ab:ob,
                zIndex:b.zIndex||1
            }).on(Kb?"touchstart":"mouseover",function(){
                e.hoverSeries!==a&&a.onMouseOver()
            }).on("mouseout",
                function(){
                    b.stickyTracking||a.onMouseOut()
                }).css(h).add(e.trackerGroup)
        }
    };

    ma=yb(rb);
    wb.line=ma;
    ma=yb(rb,{
        type:"area"
    });
    wb.area=ma;
    ma=yb(rb,{
        type:"spline",
        getPointSpline:function(a,b,c){
            var d=b.plotX,e=b.plotY,f=a[c-1],g=a[c+1],h,i,j,m;
            if(c&&c<a.length-1){
                a=f.plotY;
                j=g.plotX;
                g=g.plotY;
                var v;
                h=(1.5*d+f.plotX)/2.5;
                i=(1.5*e+a)/2.5;
                j=(1.5*d+j)/2.5;
                m=(1.5*e+g)/2.5;
                v=(m-i)*(j-d)/(j-h)+e-m;
                i+=v;
                m+=v;
                if(i>a&&i>e){
                    i=Ia(a,e);
                    m=2*e-i
                }else if(i<a&&i<e){
                    i=sb(a,e);
                    m=2*e-i
                }
                if(m>g&&m>e){
                    m=Ia(g,e);
                    i=2*e-m
                }else if(m<
                    g&&m<e){
                    m=sb(g,e);
                    i=2*e-m
                }
                b.rightContX=j;
                b.rightContY=m
            }
            if(c){
                b=["C",f.rightContX||f.plotX,f.rightContY||f.plotY,h||d,i||e,d,e];
                f.rightContX=f.rightContY=null
            }else b=[Za,d,e];
            return b
        }
    });
    wb.spline=ma;
    ma=yb(ma,{
        type:"areaspline"
    });
    wb.areaspline=ma;
    var gd=yb(rb,{
        type:"column",
        pointAttrToOptions:{
            stroke:"borderColor",
            "stroke-width":"borderWidth",
            fill:"color",
            r:"borderRadius"
        },
        init:function(){
            rb.prototype.init.apply(this,arguments);
            var a=this,b=a.chart;
            b.hasColumn=true;
            b.hasRendered&&u(b.series,function(c){
                if(c.type===
                    a.type)c.isDirty=true
            })
        },
        translate:function(){
            var a=this,b=a.chart,c=a.options,d=c.stacking,e=c.borderWidth,f=0,g=a.xAxis.reversed,h=a.xAxis.categories,i={},j,m;
            rb.prototype.translate.apply(a);
            u(b.series,function(C){
                if(C.type===a.type&&C.visible){
                    if(C.options.stacking){
                        j=C.stackKey;
                        if(i[j]===Wa)i[j]=f++;
                        m=i[j]
                    }else m=f++;
                    C.columnIndex=m
                }
            });
            var v=a.data,P=a.closestPoints;
            h=bb(v[1]?v[P].plotX-v[P-1].plotX:b.plotSizeX/(h&&h.length||1));
            P=h*c.groupPadding;
            var T=(h-2*P)/f,Y=c.pointWidth,H=K(Y)?(T-Y)/2:
            T*c.pointPadding,U=Ia(A(Y,T-2*H),1),z=H+(P+((g?f-a.columnIndex:a.columnIndex)||0)*T-h/2)*(g?-1:1),M=a.yAxis.getThreshold(c.threshold||0),y=A(c.minPointLength,5);
            u(v,function(C){
                var Z=C.plotY,Sa=C.yBottom||M,Na=C.plotX+z,Ea=ld(sb(Z,Sa)),gb=ld(Ia(Z,Sa)-Ea),Lb=a.yAxis.stacks[(C.y<0?"-":"")+a.stackKey],Rb;
                d&&a.visible&&Lb&&Lb[C.x]&&Lb[C.x].setOffset(z,U);
                if(bb(gb)<y){
                    if(y){
                        gb=y;
                        Ea=bb(Ea-M)>y?Sa-y:M-(Z<=M?y:0)
                    }
                    Rb=Ea-3
                }
                sa(C,{
                    barX:Na,
                    barY:Ea,
                    barW:U,
                    barH:gb
                });
                C.shapeType="rect";
                Z=sa(b.renderer.Element.prototype.crisp.apply({},
                    [e,Na,Ea,U,gb]),{
                    r:c.borderRadius
                });
                if(e%2){
                    Z.y-=1;
                    Z.height+=1
                }
                C.shapeArgs=Z;
                C.trackerArgs=K(Rb)&&Ca(C.shapeArgs,{
                    height:Ia(6,gb+3),
                    y:Rb
                })
            })
        },
        getSymbol:function(){},
        drawGraph:function(){},
        drawPoints:function(){
            var a=this,b=a.options,c=a.chart.renderer,d,e;
            u(a.data,function(f){
                var g=f.plotY;
                if(g!==Wa&&!isNaN(g)&&f.y!==null){
                    d=f.graphic;
                    e=f.shapeArgs;
                    if(d){
                        Fc(d);
                        d.animate(e)
                    }else f.graphic=c[f.shapeType](e).attr(f.pointAttr[f.selected?"select":ib]).add(a.group).shadow(b.shadow)
                }
            })
        },
        drawTracker:function(){
            var a=
            this,b=a.chart,c=b.renderer,d,e,f=+new Date,g=a.options,h=g.cursor,i=h&&{
                cursor:h
            },j;
            u(a.data,function(m){
                e=m.tracker;
                d=m.trackerArgs||m.shapeArgs;
                delete d.strokeWidth;
                if(m.y!==null)if(e)e.attr(d);else m.tracker=c[m.shapeType](d).attr({
                    isTracker:f,
                    fill:ce,
                    visibility:a.visible?Ab:ob,
                    zIndex:g.zIndex||1
                }).on(Kb?"touchstart":"mouseover",function(v){
                    j=v.relatedTarget||v.fromElement;
                    b.hoverSeries!==a&&Ga(j,"isTracker")!==f&&a.onMouseOver();
                    m.onMouseOver()
                }).on("mouseout",function(v){
                    if(!g.stickyTracking){
                        j=
                        v.relatedTarget||v.toElement;
                        Ga(j,"isTracker")!==f&&a.onMouseOut()
                    }
                }).css(i).add(m.group||b.trackerGroup)
            })
        },
        animate:function(a){
            var b=this,c=b.data;
            if(!a){
                u(c,function(d){
                    var e=d.graphic;
                    d=d.shapeArgs;
                    if(e){
                        e.attr({
                            height:0,
                            y:b.yAxis.translate(0,0,1)
                        });
                        e.animate({
                            height:d.height,
                            y:d.y
                        },b.options.animation)
                    }
                });
                b.animate=null
            }
        },
        remove:function(){
            var a=this,b=a.chart;
            b.hasRendered&&u(b.series,function(c){
                if(c.type===a.type)c.isDirty=true
            });
            rb.prototype.remove.apply(a,arguments)
        }
    });
    wb.column=gd;
    ma=yb(gd,

    {
            type:"bar",
            init:function(a){
                a.inverted=this.inverted=true;
                gd.prototype.init.apply(this,arguments)
            }
        });
    wb.bar=ma;
    ma=yb(rb,{
        type:"scatter",
        translate:function(){
            var a=this;
            rb.prototype.translate.apply(a);
            u(a.data,function(b){
                b.shapeType="circle";
                b.shapeArgs={
                    x:b.plotX,
                    y:b.plotY,
                    r:a.chart.options.tooltip.snap
                }
            })
        },
        drawTracker:function(){
            var a=this,b=a.options.cursor,c=b&&{
                cursor:b
            },d;
            u(a.data,function(e){
                (d=e.graphic)&&d.attr({
                    isTracker:true
                }).on("mouseover",function(){
                    a.onMouseOver();
                    e.onMouseOver()
                }).on("mouseout",
                    function(){
                        a.options.stickyTracking||a.onMouseOut()
                    }).css(c)
            })
        },
        cleanData:function(){}
    });
    wb.scatter=ma;
    ma=yb(Lc,{
        init:function(){
            Lc.prototype.init.apply(this,arguments);
            var a=this,b;
            sa(a,{
                visible:a.visible!==false,
                name:A(a.name,"Slice")
            });
            b=function(){
                a.slice()
            };
            
            Qa(a,"select",b);
            Qa(a,"unselect",b);
            return a
        },
        setVisible:function(a){
            var b=this.series.chart,c=this.tracker,d=this.dataLabel,e=this.connector,f=this.shadowGroup,g;
            g=(this.visible=a=a===Wa?!this.visible:a)?"show":"hide";
            this.group[g]();
            c&&
            c[g]();
            d&&d[g]();
            e&&e[g]();
            f&&f[g]();
            this.legendItem&&b.legend.colorizeItem(this,a)
        },
        slice:function(a,b,c){
            var d=this.series.chart,e=this.slicedTranslation;
            oc(c,d);
            A(b,true);
            a=this.sliced=K(a)?a:!this.sliced;
            a={
                translateX:a?e[0]:d.plotLeft,
                translateY:a?e[1]:d.plotTop
            };
            
            this.group.animate(a);
            this.shadowGroup&&this.shadowGroup.animate(a)
        }
    });
    ma=yb(rb,{
        type:"pie",
        isCartesian:false,
        pointClass:ma,
        pointAttrToOptions:{
            stroke:"borderColor",
            "stroke-width":"borderWidth",
            fill:"color"
        },
        getColor:function(){
            this.initialColor=
            this.chart.counters.color
        },
        animate:function(){
            var a=this;
            u(a.data,function(b){
                var c=b.graphic;
                b=b.shapeArgs;
                var d=-kc/2;
                if(c){
                    c.attr({
                        r:0,
                        start:d,
                        end:d
                    });
                    c.animate({
                        r:b.r,
                        start:b.start,
                        end:b.end
                    },a.options.animation)
                }
            });
            a.animate=null
        },
        translate:function(){
            var a=0,b=-0.25,c=this.options,d=c.slicedOffset,e=d+c.borderWidth,f=c.center.concat([c.size,c.innerSize||0]),g=this.chart,h=g.plotWidth,i=g.plotHeight,j,m,v,P=this.data,T=2*kc,Y,H=sb(h,i),U,z,M,y=c.dataLabels.distance;
            f=sc(f,function(C,Z){
                return(U=
                    /%$/.test(C))?[h,i,H,H][Z]*ja(C)/100:C
            });
            this.getX=function(C,Z){
                v=Fa.asin((C-f[1])/(f[2]/2+y));
                return f[0]+(Z?-1:1)*qb(v)*(f[2]/2+y)
            };
        
            this.center=f;
            u(P,function(C){
                a+=C.y
            });
            u(P,function(C){
                Y=a?C.y/a:0;
                j=W(b*T*1E3)/1E3;
                b+=Y;
                m=W(b*T*1E3)/1E3;
                C.shapeType="arc";
                C.shapeArgs={
                    x:f[0],
                    y:f[1],
                    r:f[2]/2,
                    innerR:f[3]/2,
                    start:j,
                    end:m
                };
        
                v=(m+j)/2;
                C.slicedTranslation=sc([qb(v)*d+g.plotLeft,Cb(v)*d+g.plotTop],W);
                z=qb(v)*f[2]/2;
                M=Cb(v)*f[2]/2;
                C.tooltipPos=[f[0]+z*0.7,f[1]+M*0.7];
                C.labelPos=[f[0]+z+qb(v)*y,f[1]+M+Cb(v)*
                y,f[0]+z+qb(v)*e,f[1]+M+Cb(v)*e,f[0]+z,f[1]+M,y<0?"center":v<T/4?"left":"right",v];
                C.percentage=Y*100;
                C.total=a
            });
            this.setTooltipPoints()
        },
        render:function(){
            this.drawPoints();
            this.options.enableMouseTracking!==false&&this.drawTracker();
            this.drawDataLabels();
            this.options.animation&&this.animate&&this.animate();
            this.isDirty=false
        },
        drawPoints:function(){
            var a=this.chart,b=a.renderer,c,d,e,f=this.options.shadow,g,h;
            u(this.data,function(i){
                d=i.graphic;
                h=i.shapeArgs;
                e=i.group;
                g=i.shadowGroup;
                if(f&&!g)g=
                    i.shadowGroup=b.g("shadow").attr({
                        zIndex:4
                    }).add();
                if(!e)e=i.group=b.g("point").attr({
                    zIndex:5
                }).add();
                c=i.sliced?i.slicedTranslation:[a.plotLeft,a.plotTop];
                e.translate(c[0],c[1]);
                g&&g.translate(c[0],c[1]);
                if(d)d.animate(h);else i.graphic=b.arc(h).attr(sa(i.pointAttr[ib],{
                    "stroke-linejoin":"round"
                })).add(i.group).shadow(f,g);
                i.visible===false&&i.setVisible(false)
            })
        },
        drawDataLabels:function(){
            var a=this.data,b,c=this.chart,d=this.options.dataLabels,e=A(d.connectorPadding,10),f=A(d.connectorWidth,1),
            g,h,i=A(d.softConnector,true),j=d.distance,m=this.center,v=m[2]/2;
            m=m[1];
            var P=j>0,T=[[],[]],Y,H,U,z,M=2,y;
            if(d.enabled){
                rb.prototype.drawDataLabels.apply(this);
                u(a,function(gb){
                    if(gb.dataLabel)T[gb.labelPos[7]<kc/2?0:1].push(gb)
                });
                T[1].reverse();
                z=function(gb,Lb){
                    return Lb.y-gb.y
                };
            
                for(a=T[0][0]&&T[0][0].dataLabel&&ja(T[0][0].dataLabel.styles.lineHeight);M--;){
                    var C=[],Z=[],Sa=T[M],Na=Sa.length,Ea;
                    for(y=m-v-j;y<=m+v+j;y+=a)C.push(y);
                    U=C.length;
                    if(Na>U){
                        h=[].concat(Sa);
                        h.sort(z);
                        for(y=Na;y--;)h[y].rank=
                            y;
                        for(y=Na;y--;)Sa[y].rank>=U&&Sa.splice(y,1);
                        Na=Sa.length
                    }
                    for(y=0;y<Na;y++){
                        b=Sa[y];
                        h=b.labelPos;
                        b=9999;
                        for(H=0;H<U;H++){
                            g=bb(C[H]-h[1]);
                            if(g<b){
                                b=g;
                                Ea=H
                            }
                        }
                        if(Ea<y&&C[y]!==null)Ea=y;
                        else{
                            if(U<Na-y+Ea&&C[y]!==null)Ea=U-Na+y;
                            for(;C[Ea]===null;)Ea++
                        }
                        Z.push({
                            i:Ea,
                            y:C[Ea]
                        });
                        C[Ea]=null
                    }
                    Z.sort(z);
                    for(y=0;y<Na;y++){
                        b=Sa[y];
                        h=b.labelPos;
                        g=b.dataLabel;
                        H=Z.pop();
                        Y=h[1];
                        U=b.visible===false?ob:Ab;
                        Ea=H.i;
                        H=H.y;
                        if(Y>H&&C[Ea+1]!==null||Y<H&&C[Ea-1]!==null)H=Y;
                        Y=this.getX(Ea===0||Ea===C.length-1?Y:H,M);
                        g.attr({
                            visibility:U,
                            align:h[6]
                        })[g.moved?"animate":"attr"]({
                            x:Y+d.x+({
                                left:e,
                                right:-e
                            }
                            [h[6]]||0),
                            y:H+d.y
                        });
                        g.moved=true;
                        if(P&&f){
                            g=b.connector;
                            h=i?[Za,Y+(h[6]==="left"?5:-5),H,"C",Y,H,2*h[2]-h[4],2*h[3]-h[5],h[2],h[3],Ka,h[4],h[5]]:[Za,Y+(h[6]==="left"?5:-5),H,Ka,h[2],h[3],Ka,h[4],h[5]];
                            if(g){
                                g.animate({
                                    d:h
                                });
                                g.attr("visibility",U)
                            }else b.connector=g=this.chart.renderer.path(h).attr({
                                "stroke-width":f,
                                stroke:d.connectorColor||b.color||"#606060",
                                visibility:U,
                                zIndex:3
                            }).translate(c.plotLeft,c.plotTop).add()
                        }
                    }
                }
            }
        },
        drawTracker:gd.prototype.drawTracker,
        getSymbol:function(){}
    });
    wb.pie=ma;
    db.Highcharts={
        Chart:Nd,
        dateFormat:Xc,
        pathAnim:Kc,
        getOptions:function(){
            return Xa
        },
        hasRtlBug:me,
        numberFormat:Ed,
        Point:Lc,
        Color:bc,
        Renderer:dd,
        seriesTypes:wb,
        setOptions:function(a){
            Xa=Ca(Xa,a);
            Id();
            return Xa
        },
        Series:rb,
        addEvent:Qa,
        createElement:hb,
        discardElement:Qc,
        css:Ja,
        each:u,
        extend:sa,
        map:sc,
        merge:Ca,
        pick:A,
        extendClass:yb,
        product:"Highcharts",
        version:"2.1.8"
    }
})();
